На этом шаге мы перечислим эти функции.
Для работы с символьными строками в языке С существует ряд функций. Чтобы ими воспользоваться, надо к программе подлючить заголовочный файл string.h.
Рассмотрим основные строковые функции.
sprintf (s, Control, argl, arg2, ..., argN)
Это очень полезная функция: с ее помощью мы можем собрать в одну строку совершенно разнотипные данные, расположенные в переменных arg1, arg2, ..., argN, да еще и вставить между ними необходимый текст, который может находиться между форматами расположенных в управляющей строке Control данных.
strcpy(s1, s2)
Эта функция выполняет то же, что и функция сору(), рассмотренная нами в 29 шаге: она копирует содержимое строки s2 в строку s1. Признак конца строки - символ '\0' тоже копируется.
Напомним, что строка в языке С представляет собой массив символов (описывается как char s[]) и что имя массива является адресом его первого элемента s[0]. Это нам пригодится в дальнейшем, когда в качестве аргументов strcpy() будут выступать не имена массивов, а имена переменных, типы которых мы будем изучать позже.
strcmp(s1, s2)
Эта функция сравнивает две строки (т. е. содержимое переменных s1 и s2) и выдает результат сравнения в виде числового значения.
Если s1=s2, то функция возвращает ноль; если s1<s2 - возвращает отрицательное число; если s1>s2 - возвращает положительное число.
Это происходит оттого, что функция сравнивает коды символов. Мы знаем, что коды символов в таблице кодирования символов ASCII, на основе которой кодируются символы в языке С, для английского алфавита расположены по возрастанию. Они занимают первую половину (первые 128 значений) таблицы. Вторая половина таблицы (остальные 128 позиций) отдана под национальные кодировки, которые, в общем случае, неупорядочены, что касается и кириллицы тоже. Этот момент надо учитывать при сравнении символьных строк с помощью strcmp().
В теле функции коды строки s1 посимвольно сравниваются с кодами строки s2 посредством вычитания, как обычные числа (а коды и есть числа). Такая обработка символов происходит до первого несовпадения, а результат вычитания выводится в качестве результата работы функции.
Повторим, что такой подход возможен, потому что символы английского алфавита в таблице ASCII упорядочены по возрастанию: код символа a меньше кода символа b, и в этом смысле строка "а" меньше строки "b". Поэтому если все символы, расположенные в строках на одинаковых местах, равны, то строки считаются равными, в противном случае одна строка либо меньше, либо больше друюй. Таким образом, строки, содержащие текст на кириллице, сравнивать с помощью этой функции нельзя. Следует отметить, что одинаковые символы, введенные на разных регистрах (т. е большие и маленькие буквы), различаются. Это и понятно: у них в таблице ASCII разные коды.
strcmpi(s1, s2)
Эта функция работает так же, как и strcmp(), но регистров не различает (для нее, например, символ а совпадает с символом А).
strcat(s1, s2)
Это функция сцепления (как говорят, конкатенации) двух строк. Содержимое строки s2 дописывается в конец строки s1, и результат пересылается в s1.
strlen(s)
Эта функция возвращает ("возвращает", значит, можно писать, например, int y=strlen(s)) длину строки s (т. е. количество символов в строке) без учета символа '\0' - признака конца строки.
На следующем шаге мы рассмотрим пример использования указанных функций.