Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Г) Копирование, сцепление (конкатенация), сравнение, поиск строк - массивов char



Описание прототипов стандартных функций работы со строками - массивами char находится в файле string.h.

Рассмотрим наиболее часто используемые функции (перед именем функции указывается тип ее результата, в скобках - количество и типы параметров).

Функция int strlen (char *S) возвращает длину строки (количество символов в строке), при этом завершающий нулевой байт не учитывается.

Пример:

char S1[]="Минск!\0", S2[90]="БГУИР-Ура!";

printf("%d, %d.", strlen(S1), strlen(S2));

Результат выполнения данного участка программы:

6, 10.

Функция strcpy (char *S1, char *S2) - копирует содержимое строки S2 в строку S1. Она заменяет операцию присваивания, непригодную для массивов в языке С.

Пример:

char s[50], t[30];

strcpy(t, "Hello!");

strcpy(s,t);

Функция strcat (char *S1, char *S2) - присоединяет строку S2 к концу строки S1 и помещает ее в массив, где находилась строка S1, при этом строка S2 не изменяется. Нулевой байт, который завершал строку S1, заменяется первым символом строки S2. (Такая операция называется также конкатенацией или сцеплением строк).

Пример:

char a[20], b[10];

strcpy(a, "Hello,");

strcpy(b, "world!");

strcat(a,b);

puts(a);

Результат выполнения данного участка программы:

Hello,world!

Функция int strcmp (char *S1, char *S2) сравнивает строки S1 и S2. Результат функции - целое число, меньшее 0, если значение S1 предшествует значению S2 в "алфавитном" порядке; большее 0, если S2 предшествует S1; равное 0, если строки равны, т.е. содержат одно и то же число одинаковых символов.

Под "алфавитным порядком" здесь понимается порядок возрастания кодов символов (см. тему "Кодирование символов", кодовые таблицы). Как можно видеть из этих таблиц, этот порядок совпадает с алфавитным для латинских букв одинакового регистра, а также для русских букв одинакового регистра (кроме буквы ' ё '). Если первые символы S1 и S2 совпадают, то учитываются следующие символы и т.д., по обычным алфавитным правилам.

Функция int stricmp (char *S1, char *S2) делает то же, что и strcmp, но нечувствительна к регистру букв (например, 'D' и 'd' для нее - одинаковые символы).

Пример:

char a[20], b[10];

gets(a);

gets(b);

if (!strcmp(a,b))

puts("a==b!");

else

if (strcmp(a,b)<0)

puts("a<b!");

else puts("b<a!");

Для a="Москва", b="Могилев" результат будет:

b<a!

Функции:

strncpy (char *S1, char *S2, int max);

strncat (char *S1, char *S2, int max);

int strncmp (char *S1, char *S2, int max);

int strnicmp (char *S1, char *S2, int max);

делают то же, что и соответствующие им функции strcpy, strcat, strcmp, stricmp, но, если длина строки S2 превышает max, то они используют только первые max ее символов. В этом случае нуль-терминатор в конце полученной строки может не быть поставлен автоматически.

Существует также функция для поиска заданной подстроки в заданной строке (подстрокой называется подряд идущая часть строки):

char * strstr(char *S1, char *S2);

Здесь S1 - строка, в которой будет проводиться поиск; S2 - искомая подстрока. Результатом функции является указатель (см. тему "Указатели") на первое (считая слева направо) местоположение подстроки S2 в строке S1, либо NULL, если S2 не встречается в S1.





Дата публикования: 2014-11-04; Прочитано: 295 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...