Функции операций над строками из библиотеки обработки строк — КиберПедия 

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...

Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьше­ния длины пробега и улучшения маневрирования ВС при...

Функции операций над строками из библиотеки обработки строк

2020-05-08 192
Функции операций над строками из библиотеки обработки строк 0.00 из 5.00 0 оценок
Заказать работу

Перечень функций приведен на рис. 17.

 

Прототип Описание функции

char *scrcpy (char *s1, const char *s2)

  Копирует строку s2 в массив s1. Возвращает значение s1.

char *strncpy (char *s1, const char *s2, size t n)

  Копирует не более чем n символов строки s2 в массив s1. Возвращает значение s1

char *strcat (char *sl, const char *s2)

  Объединяет строку s2 со строкой массива s1. Первый символ строки s2 переписывает символ NULL строки s1. Возвращает значение s1.

char strncat (char *sl, const char *s2, size t n)

  Объединяет не более чем n символов строки s2 со строкой массива s1. Первый символ строки s2 переписывает символ NULL строки s1. Возвращает значение s1.

Рис. 17. Функции для выполнения операций над строками

Из библиотеки обработки строк

Функция strcpy копирует второй аргумент — строку — в первый аргумент — массив символов, который должен иметь достаточный размер, чтобы запомнить строку и ограничивающий символ NULL, который также копируется. Функция strncpy эквивалентна strcpy за исключением того, что strncpy задает число символов, которые необходимо скопировать из строки в массив. Функция strncpy не копирует ограничивающий символ NULL второго аргумента, если не выполнено следующее условие: число копируемых символов превышает длину строки, по меньшей мере, на единицу. Например, если вторым аргументом является строка "test", то ограничивающий символ NULL записывается, только если значение третьего аргумента функции составляет не менее 5 (4 символа в строке "test" плюс 1 символ NULL). Если значение третьего аргумента больше 5, то символы NULL добавляются в массив до тех пор, пока общее число записанных символов не станет равным числу, заданному в третьем аргументе.

Программа, приведенная на рис. 18, вызывает функцию strcpy для копирования всей строки из массива х в массив у и первых 14 символов из массива х в массив z. Символ NULL ('\0') добавляется в массив z в отдельном операторе, поскольку обращение программы к функции strcpy не копирует нулевой символ (третий аргумент меньше длины строки второго аргумента).

Функция strcat выполняет объединение строк (конкатенацию): второго аргумента — строки — с первым аргументом — массивом символов, содержащим строку. Первый символ второго аргумента заменяет последний символ NULL строки первого аргумента.

Функция strncat выполняет объединение определенного числа символов из второй строки с первой строкой. Ограничивающий символ NULL добавляется к строке результата автоматически. Программа, приведенная на рис. 19, демонстрирует применение функций strcat и strncat.

/* Применение strcpy и strncpy */

#include <stdio.h>

#include <string.h>

main () {

char x[] = "Happy Birthday to You";

char у [25], z[15];

printf ("%s%s\n%s%s\n",

"The string in array x is: ", x,

"The string in array у is: ", strcpy (y, x));

strncpy(z, x, 14);

z[14] = '\0';

printf ("The string in array z is: %s\n", z);

return 0; }

 

Вывод на экран

The string in array x: Happy Birthday to You

The string in array y: Happy Birthday to You

The string in array z: Happy Birthday

Рис. 18. Применение strcpy и strncpy

 

/* Применение strcat и strncat */

#include <stdio.h>

#include <string.h>

main ()

{

char s1[20]= "Happy

char s2[] ="New Year";

char s3[40] = "";

printf ("s1 = %s\ns2 = %s\n", s1, s2);

printf ("strcat (si, s2) = %s\n",

strcat(sl, s2));

printf("strncat(s3, s1 6) = %s\n", strncat(s3, si, 6));

printf. ("strcat (s3, si) = %s\n", strcat (s3, si));

return 0; }

 

Вывод на экран

s1 = Happy

s2 = New Year

strncat(si, s2) = Happy New Year

strncat(s3, si, 6) = Happy

strcat(s3, si) = Happy Happy New Year

Рис. 19. Применение strcat и strncat

Функции сравнения из библиотеки обработки строк

Прототипы функций и краткое описание каждой из них приведены на рис. 20.

 

Прототип Описание функции

int  strcmp (const char *s1, const char *s2)

  Сравнивает строку s1 со строкой s2. Функция возвращает 0, значение меньше 0 или больше 0, если s1 соответственно равна, меньше или больше s2.

int strncmp (const char * s1, const char *s2,    size t n)

  Сравнивает до n символов строки s1 со строкой s2. функция возвращает 0, значение меньше 0 или больше 0, если s1 соответственно равна, меньше или больше чем s2.

Рис. 20. Функции сравнения строк из библиотеки обработки строк

Программа, показанная на рис. 21, сравнивает три строки, используя функции strcmp и strncmp. Функция strcmp сравнивает символ за символом первый аргумент-строку со вторым аргументом-строкой. Функция возвращает 0, если строки равны, отрицательное значение, если первая строка меньше второй, и положительное значение, если первая строка больше второй. Функция strncmp эквивалентна функции strcmp, за исключением того, что strncmp сравнивает до n символов в строках. Функция strncmp не сравнивает символы, идущие за символом NULL. Эта программа печатает целое значение, возвращаемое при каждом вызове функции.

/* Применение strcmp и strncmp.*/

#include <stdio.h>

#include <string.h>

main () {

char *sl = "Happy New Year";

char *s2 = "Happy New Year";

char *s3 = "Happy Holidays";

printf ("%s%s\n%s%s\n%s%s\n\n%s%2d\n%s%2d\n%s%2d\n\n", "s1 = ", s1, "s2 = ", s2, "s3 = ", s3, "strcmp(s1, s2) = ", strcmp(s1, s2), "strcmp(sl, s3) = ", strcmp (s1, s3), "strcmp (s3, s1) = ", strcmp(s3, s1));

printf("%s%2d\n%s%2d\n%s%2d\n",

"strncmp(sl, s3, 6) = ", strncmp(sl, s3, 6), "strncmp(si, s3, 7) = ", strncmp(si, s3, 7), "strncmp(s3, si, 7) = ", strncmp(s3, si, 7));

return 0; }

 

Вывод на экран

s1 = Happy New Year

s2 = Happy New Year

s3 = Happy Holidays

strcmp(si, s2) = 0

strcmp(si, s3) = 1

strcmp(s3, si) = -1

strncmp(si, s3, 6) = 0

strncmp(si, s3, 7) = 1

strncmp(s3, si, 7) = -1

Рис. 21. Применение strcmp и strncmp

Внутренние числовые коды, использующиеся для представления символов, могут отличаться на различных компьютерах.

 


Поделиться с друзьями:

Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьше­ния длины пробега и улучшения маневрирования ВС при...

Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...

Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.011 с.