Основы программирования на C++, PASCAL
4.11. Обработка символьных строк
В языках Си/Си++ нет специально определенного строкового типа данных, как в Турбо Паскале. Символьные строки организуются как массивы символов, последним из которых является символ \0, внутренний код которого равен нулю. Отсюда следует одно важное преимущество перед строками в Турбо Паскале, где размер строки не может превышать 255 (длина указывается в первом байте), — на длину символьного массива в Си нет ограничения.
Строка описывается как символьный массив. Например:
char STR[20] ;
Одновременно с описанием строка может инициализироваться. Возможны два способа инициализации строки — с помощью строковой константы и в виде списка символов:
char S[10]="строка";
char S []="строка";
char S[10]={'c','т*,'р','о','к','а','\0'};
По результату первого описания под строку S будет выделено 10 байт памяти, из них первые 7 получат значения при инициализации (седьмой — нулевой символ). Второе описание сформирует строку из семи символов. Третье описание по результату равнозначно первому. Конечно, можно определить символьный массив и так:
char S[10]={'c','т','р','о','к','а'};
т. е. без нулевого символа в конце. Но это приведет к проблемам с обработкой такой строки, так как будет отсутствовать ориентир на его окончание.
Отдельные символы строки идентифицируются индексированными именами. Например, в описанной выше строке S [0] =' с', S[5]='a'.
Обработка строк обычно связана с перебором всех символов от начала до конца. Признаком конца такого перебора является обнаружение нулевого символа. В следующей программе производятся последовательная замена всех символов строки на звездочки и подсчет длины строки.
Пример 1.
В результате выполнения программы на экране получим:
fh5j
*h5j
**5j
***J
****
Длина строки=4
В этой программе цикл повторяет свое выполнение, пока S[i] не получит значение нулевого символа.
Для вывода строки на экран в стандартной библиотеке stdio имеется функция puts(). Аргументом этой функции указывается имя строки. В этой же библиотеке есть функция ввода строки с клавиатуры с именем gets(). В качестве аргумента указывается имя строки, в которую производится ввод.
Среди стандартных библиотек Си/Си++ существует библиотека функций для обработки строк. Ее заголовочный файл — string.h. В следующем примере используется функция определения длины строки из этой библиотеки. Имя функции — strlen(). В качестве аргумента указывается имя строки.