5.1. Основные сведения

Символьная константа - это символ (единственный), заключенный в одиночные кавычки, как, например, 'Х'. Значением символьной константы является численное значение этого символа в машинном представлении набора символов. Все символы упорядочены в соответствии с принятым в ПК коде (например ASCII). При этом порядковый номер символов называется кодом (например, код латинского символа 'А ' равен 65; символа '3' равен 51). Для символьных данных не определены никакие арифметические операции, но они могут сравниваться по своим кодам, участвовать в чтении, печати, операторах присваивания.

Строка - это последовательность (массив) символов, заключенная в двойные кавычки, заканчивающаяся нуль-символом (\0 – символ с кодом равным нулю). По положению нуль-символа определяется фактическая длина строки. Например, длина строки char text[ ] = "Моя программа!" равна 14 байт (включая пробел).

Для форматного ввода и вывода символьных констант используется спецификатор %с, строк - %s и специальные функции: getchar(),gets()- ввод и putchar(), puts()-вывод. Библиотека Си содержит функции обработки строк, прототипы которых определяются в заголовочном файле string.h. Например:

strlen(str) – определяет длину строки str;

strcat(str1,str2) - сцепление строк в порядке их перечисления;

strncat(str1,str2,kol) – приписывает kol символов строки str2 к строке str1;

strcmp(str1,str2) – сравнивает две строки str1 и str2 и возвращает 0, если они одинаковы; результат отрицателен, если str1<str2 и положителен, если str1>str2;

strncmp(str1, str2, kol) – сравниваются части строк str1 и str2 из kol символов. Результат равен 0, если они одинаковы.

strcpy(str1,str2) – копирует строку str2 в строку str1.

 

5.2. Пример обработки символьной информации

#include <stdio.h>

#include <conio.h>

#include <string.h>

main ( )

{ char gwords [10] [40], temp [40];

int i=0;

printf ("Введите 10 слов, начинающихся с д: \n");

while ( i < 10 )

{ gets (temp);

if (temp [0] != 'д') // проверка первого символа

    printf (" %s не начинается с д! \n", temp);

else

    {strcpy (gwords [i], temp); i++;}

}

puts ("Следующие слова соответствуют условию:");

for (i=0; i < 10; i++)

    puts (gwords [i] );

getch();

return 0;

}

Вводятся слова, сравнивается первый символ, если это не 'д', то вводится следующее слово, иначе слово копируется в новый массив слов gwords.

 

5.3. Контрольные вопросы

1. Ввод и вывод символов и строк.

2. Функции для работы со строками.

3. Чем отличается инициализация символа от инициализации строки?

4. Какой заголовочный файл подключается для работы со строками?