C String

В языке C строки фактически используют нулевой символ\0Завершающий одномерный массив символов. Поэтому,\0используется для обозначения конца строки.

Нулевой символ) также известный как терминатор, сокращённоNUL, является числовым значением0управляющего символа,\0является экранирующим символом, означающим, что нужно сообщить компилятору, что это не символ0, а скорее нулевой символ.

Следующее объявление и инициализация создаютEXAMPLEстроку. Поскольку нулевой символ хранится в конце массива,\0, поэтому размер массива символов на единицу больше, чем у словаEXAMPLEколичество символов.

char site[7] = {'R', 'U', 'N', 'O', 'O', 'B', '\0'};

согласно правилам инициализации массива, вы можете записать приведённый выше оператор следующим образом:

char site[] = "EXAMPLE";

Ниже показано представление в памяти строк, определённых в C/C++:

C/C++ 中的字符串表示

На самом деле, вам не нужно помещатьnullСимвол помещается в конец строковой константы. Компилятор C при инициализации массива автоматически\0в конец строки. Давайте попробуем вывести вышеуказанную строку:

Пример

#include <stdio.h> int main () { char site[7] = {'R', 'U', 'N', 'O', 'O', 'B', '\0'}; printf("Rookie Tutorial: %s\n", site ); return 0; }

Когда приведенный выше код скомпилирован и выполнен, он выдает следующие результаты:

Example: EXAMPLE

В C есть большое количество функций для работы со строками:

Порядковый номерФункция и назначение
1strcpy(s1, s2);
Копирует строку s2 в строку s1.
2strcat(s1, s2);
Присоединяет строку s2 к концу строки s1.
3strlen(s1);
Возвращает длину строки s1.
4strcmp(s1, s2);
Если s1 и s2 совпадают, возвращает 0; если s1<s2, возвращает значение меньше 0; если s1>s2, возвращает значение больше 0.
5strchr(s1, ch);
Возвращает указатель на первое вхождение символа ch в строке s1.
6strstr(s1, s2);
Возвращает указатель на первое вхождение строки s2 в строке s1.

В следующем примере используются некоторые из вышеперечисленных функций:

Пример

#include <stdio.h> #include <string.h> int main () { char str1[14] = "example"; char str2[14] = "google"; char str3[14]; int len ; /*Копировать str1 в str3*/ strcpy(str3, str1); printf("strcpy( str3, str1) : %s\n", str3 ); /*Соедините str1 и str2*/ strcat( str1, str2); printf("strcat( str1, str2): %s\n", str1 ); /*После конкатенации общая длина str1*/ len = strlen(str1); printf("strlen(str1) : %d\n", len ); return 0; }

Когда приведенный выше код скомпилирован и выполнен, он выдает следующие результаты:

strcpy( str3, str1) :  example
strcat( str1, str2):   examplegoogle
strlen(str1) :  12

Вы можете найти больше функций для работы со строками в стандартной библиотеке C.

Другие расширения