Строка представляет собой последовательность (одномерный массив) из одного или более символов, последним из которых является нулевой символ таблицы ASCII '\0'. Это единственный вид строки, определенный в C. Язык C поддерживает строковые константы, называемые строковыми литералами. Строковый литерал – это любая последовательность символов, заключенная в двойные кавычки ("…"). В конце литерала компилятор автоматически добавляет нулевой символ. Строковая переменная может быть сформирована как одномерный массив типа char либо с помощью указателя на переменную типа char. Количество символов в массиве (объем выделяемой памяти) должно быть не меньше, чем количество символов в строке плюс один символ для хранения символа нуль.
Синтаксис объявления имеет вид: char ID [N];где ID – идентификатор массива, N – длина массива, при этом в памяти для хранения строки выделяется N байт. Идентификатор массива – константа типа указатель, значение которой равно адресу первого элемента массива. Инициализация возможна двумя способами:
· посимвольная инициализация char st[10]={'y','e','s','\0'}; при этом оставшиеся 6 позиций не будут заполнены;
· инициализация на основе строковой константы char st [10]="Yes"; при этом в выделенную для строки память будут помещены 3 символа и добавлен четвертый –символ '\0'.
Инициализация и объявление возможны без указания длины массива char st[]={'y','e','s','\0'}; в этом случае будет создан массив из четырех элементов.
Существует несколько способов ввода строк:
· scanf ("%s",S1); где S1 – указатель типа char* на предварительно выделенную область. При использовании формата %s аргумент рассматривается как строка. Ввод строки реализуется до пробела или нажатия [Enter]. Несколько слов вводить в одну переменную с помощью scanf нельзя;
· scanf ("%Ns",S1); где N – максимальноечисло символов, записываемых в строку S1. Заполнение строки заканчивается при вводе N непробельных символов или выполняется до первого пробельного символа.
· gets (S1);при помощи этой функции можно вводить строку, содержащую пробелы. Ввод прекращается при нажатии [Enter] или при заполнении буфера клавиатуры.
Вывод символьных строк на экран в C осуществляется с помощью функций:
· printf("%s",S1);где S1 – указатель типа char*
· puts (S1);
Определение длины строки: strlen (S1) – длина строки S1, исключая нулевой символ.
Копирование строк:
strcpy (S1,S2), где S1 – указатель,S2 – указатель или константа. Стрка S2 копируется посимвольно в строку S1.
Слияние строк (конкатенация): strcat (S1,S2). К концу строки S1 подсоединяется строка S2. Нулевой символ в конце строки S1 отбрасывается. Компилятор не следит, хватит ли в S1 места для S1 плюс S2.
Сравнение строк: strcmp (S1,S2). Сравниваются коды символов, находящихся на одинаковых позициях в строках S1 и S2, начиная с нулевой. В зависимости от компилятора результат работы функции следующий:
· возвращается нуль, если строки одинаковы, и значение отличное от нуля, если строки не совпадают; · отрицательное число, если строка S1 «меньше» строки S2 с точки зрения алфавита (ASCII-кодов), и положительное, если «больше».