C: Строки

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

char name[20];

Приведенное выше объявление позволяет создать массив размером в 20 символов, причем в случае записи в него более длинной строки, лишние символы этой строки будут отброшены.

А это альтернативный метод объявления строки без ограничения ее длины:

char *name = "David Smith"

Работа со строками

Множество функций для работы со строками доступно в модуле string стандартной библиотеки.

#include <string.h>

В частности, в данном модуле имеются следующие функции:

  • strlen() — возвращает длину строки (без завершающего нулевого символа).
  • strncpy() — копирует строку в область памяти заданного размера.
  • strcat() — объединяет две строки.
  • strcmp() — сравнивает две строки с учетом регистра символов.
  • strcmpi() — сравнивает две строки без учета регистра символов.
  • strupr() — переводит символы строки в верхний регистр.
  • strlwr() — переводит символы строки в нижний регистр.
  • strtok() — разделяет строку на части по заданному фрагменту.

Преобразования строк

Значения различных типов могут преобразовываться в строки или извлекаться из строк. Для этой цели существуют следующие функции:

  • atoi() — преобразует строку в целочисленное значение.
  • atof() — преобразует строку в значение с плавающей точкой.
  • strtol() — преобразует строку в длинное целочисленное значение.

Изменение регистра отдельных символов

Перевод отдельных символов в верхний или нижний регистр осуществляется с помощью таких функций, как tolower() и toupper(). Эти функции работают с отдельными символами:

char charlower = tolower('J');
char charupper = toupper('f');

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

Загрузить файл исходного кода ToUpper

Загрузить файл исходного кода ToLower

Другие функции

Длина строки без завершающего нулевого символа может быть получена с помощью функции strlen():

int length = strlen("Hello, World");

Строка может быть записана в память с помощью функции strncpy(); две строки могут быть объединены с помощью функции strcat():

char greeting[128];
strncpy(greeting, "Andrew", strlen("Andrew"));
strcat(greeting, " the Great");

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

Пример

Простой пример вывода строки

  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5.     char *name = &quot;Andrew&quot;;
  6.     printf(&quot;Hello %s\n&quot;, name);
  7.  
  8.     return 0;
  9. }

Загрузить файл исходного кода