Функции для работы с символьными строками. Основные стандартные строковые функции

   
На этом шаге мы перечислим эти функции.

   
Для работы с символьными строками в языке С существует ряд функций. Чтобы ими воспользоваться, надо к программе подлючить заголовочный файл string.h.
Основные стандартные строковые функции

   
Рассмотрим основные строковые функции.

  • Функция sprintf(). Формат:
      sprintf (s, Control, argl, arg2, ..., argN)
    

    Эта функция родственна функции printf(), которую мы уже рассматривали на 13 шаге. Она работает точно так же, как и printf(), но, в отличие от функции
    printf(), которая выводит результат своей работы на стандартное выводное устройство (по умолчанию - экран), функция sprintf() результат своей работы выводит в строку s.

       
    Это очень полезная функция: с ее помощью мы можем собрать в одну строку совершенно разнотипные данные, расположенные в переменных arg1, arg2, ..., argN, да еще и вставить между ними
    необходимый текст, который может находиться между форматами расположенных в управляющей строке Control данных.

  • Функция strcpy(). Формат:
      strcpy(s1, s2)
    

       
    Эта функция выполняет то же, что и функция сору(), рассмотренная нами в 29 шаге: она копирует содержимое строки s2 в строку s1.
    Признак конца строки - символ '\0' тоже копируется.

       
    Напомним, что строка в языке С представляет собой массив символов (описывается как char s[]) и что имя массива является адресом его первого элемента s[0]. Это нам
    пригодится в дальнейшем, когда в качестве аргументов strcpy() будут выступать не имена массивов, а имена переменных, типы которых мы будем изучать позже.

  • Функция strcmp(). Формат:
      strcmp(s1, s2)
    

       
    Эта функция сравнивает две строки (т. е. содержимое переменных s1 и s2) и выдает результат сравнения в виде числового значения.

       
    Если s1=s2, то функция возвращает ноль; если s1<s2 - возвращает отрицательное число; если s1>s2 - возвращает положительное число.

       
    Это происходит оттого, что функция сравнивает коды символов. Мы знаем, что коды символов в таблице кодирования символов ASCII, на основе которой кодируются символы в языке С,
    для английского алфавита расположены по возрастанию. Они занимают первую половину (первые 128 значений) таблицы. Вторая половина таблицы (остальные 128 позиций) отдана под национальные
    кодировки, которые, в общем случае, неупорядочены, что касается и кириллицы тоже. Этот момент надо учитывать при сравнении символьных строк с помощью strcmp().

       
    В теле функции коды строки s1 посимвольно сравниваются с кодами строки s2 посредством вычитания, как обычные числа (а коды и есть числа). Такая обработка символов происходит
    до первого несовпадения, а результат вычитания выводится в качестве результата работы функции.

       
    Повторим, что такой подход возможен, потому что символы английского алфавита в таблице ASCII упорядочены по возрастанию: код символа a меньше кода символа b, и в
    этом смысле строка "а" меньше строки "b". Поэтому если все символы, расположенные в строках на одинаковых местах, равны, то строки считаются равными, в противном случае
    одна строка либо меньше, либо больше друюй. Таким образом, строки, содержащие текст на кириллице, сравнивать с помощью этой функции нельзя. Следует отметить, что одинаковые символы,
    введенные на разных регистрах (т. е большие и маленькие буквы), различаются. Это и понятно: у них в таблице ASCII разные коды.

  • Функция strcmpi(). Формат:
      strcmpi(s1, s2)
    

       
    Эта функция работает так же, как и strcmp(), но регистров не различает (для нее, например, символ а совпадает с символом А).

  • Функция strcat(). Формат:
      strcat(s1, s2)
    

       
    Это функция сцепления (как говорят, конкатенации) двух строк. Содержимое строки s2 дописывается в конец строки s1, и результат пересылается в s1.

  • Функция strlen(). Формат:
      strlen(s)
    

       
    Эта функция возвращает ("возвращает", значит, можно писать, например, int y=strlen(s)) длину строки s (т. е. количество символов в строке) без учета символа '\0' - признака конца строки.

   
На следующем шаге мы рассмотрим пример использования указанных функций.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий