Строки символов в языке C
В языке C в явном виде строкового типа данных нет. Имеются лишь строковые константы, представляемые в памяти вектором символов с признаком конца '\0': транслятор автоматически добавляет к ним нулевой байт.
строковая-константа::= "символ..."
Значением строковой константы является указатель (адрес) соответствующего текста. Переменная строка описывается как массив символов. Можно описать строку как указатель на символ (пример 3.9). Тогда может потребоваться запрос памяти для нее (функция malloc()). Если необходимо использовать библиотечные функции над строками, программист должен заботиться о наличии в строке признака конца '\0'. В иных случаях можно применять и другое представление строк.
Пример 3.13. Строки в языке C
char *p; /* Указатель на символ */
...
p= "КАИ"; /* Адрес текста, занимающего 4 байта: 'К', 'А', 'И', '\0' */
printf (p); /* Эквивалентно printf ("КАИ"); */
Системная библиотека содержит функции над строками символов, рассчитанные на представление строк с нулевым признаком конца (как у строковых констант), например: определение длины строки strlen, копирование строки strcpy, сцепление строк strcat, сравнение строк strcmp, поиск в строке указанного символа strchr и др. Для использования этих функций в программу требуется включить их прототипы командой #include <string.h>.
Пример 3.14. Использование строковых функций в языке C
char t1[81], t2[51], t3[81], *p;
gets(t1); /* Ввод в t1 строки до '\n', '\t' или пробела */
if (strlen(t1) < 51) /* Длина строки < 51 */
strcpy (t2, t1); /* Копирование строк: t1 в t2 */
if ((p=strrchr(t2,'.'))!=NULL) /* Есть точка в строке t2 */
{ *p = '!'; /* Замена в строке t2 правой точки на '!' */
*(p+1) = '\0'; /* Удаление части t2 после правой точки */
}
gets(t3);
if (strcmp(t1,t3)==0) puts ("Строки равны");
Дата добавления: 2015-09-27 | Просмотры: 435 | Нарушение авторских прав
|