Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие_С++.doc
Скачиваний:
145
Добавлен:
11.04.2015
Размер:
1.76 Mб
Скачать

2.12. Текстовые данные

В языке С++ текстовая информация представляется двумя типами данных: с помощью символов и стро­к - массивов символов.

Символьный тип данных

Значением данных символьного типа является любой символ из набора всех символов компьютера или его код. Каждому символу соответствует порядковый номер (код) в диапазоне 0..255. Для кодировки символов первой половины диапазона используется код ASCII (американский стандартный код для обмена информацией), или более современные стандарты в последних версиях языка Си.

При написании программ символьные данные могут быть представлены либо константами, либо переменными.

Символьная константа представляет собой одиночный символ, заключенный в апострофы, например:

‘Y’ ‘!’ ‘_’ ‘Д’

Символьная переменная объявляется с помощью ключевого слова char, например:

char cr;

Во внутренней памяти компьютера каждый символ занимаем 1 байт.

Ввод-вывод символьных данных

Для ввода символьных данных используются функции: scanf() – форматированный ввод, getchar() или getch() – специальные функции для ввода символа. Для форматного ввода и вывода символьных констант используется спецификатор (формат) %с. Необходимо помнить, что нажатие любой небуквенной клавиши при вводе ([пробел], [Enter] и др.) будет значимым и восприниматься как символ.

Пример 1. Организовать ввод символьных переменных:

a='i' b='j' c='k'

main()

{ char a,b,c;

printf("Введите исходные данные");

scanf("%c%c%c",&a,&b,&sc);

. . .

}

При вводе символы набираются без апострофов и пробелов:

ijk [Enter]

Символ клавиши [Enter] выходит за пределы списка ввода, поэтому он игнорируется.

При вводе символьной информации с помощью функции getchar() надо помнить, что функция переводит программу в состояние ожидания, но при нажатии клавиши символ выводится на экран. А, например, при выполнении следующего фрагмента программы

printf("Введите исходные данные");

a=getch();b=getch();c=getch();

переменные будут введены, но на экране их значения не отразятся.

Для вывода символьных данных используются функции printf() и putchar().

Пример 2. Организовать вывод указанных выше переменных на экран в одну строку. Запись оператора вывода будет следую­щей:

printf("%c%c%c\n",a,b,c);

Нa экране будет отображено:

ijk

Если использовать для вывода функцию putchar():

putchar(a); putchar(b); putchar(c);

на экране будет отображен тот же результат.

Обработка символьных данных

Поскольку символы в языке С++ упорядочены, к ним можно применять операции отношения (>, >=, <, <=, = =, !=). Это дает возможность записывать логические выражения с символьными данными в условных операторах. Например, оператор

if (ch =='!' ) ch ='.';

сравнивает значение переменной ch с символом ‘!’ и в случае их равенства следующая команда заменяет в символьной переменной ch восклицательный знак точкой.

Символьные данные могут использоваться и в операторах цикла for. Так, при выполнении операторов:

for( ch='a'; ch>='d'; ch++) printf("%с",ch);

в строку экрана выводится последовательность:

a b с d

Если значение символьной переменной вывести с помощью спецификатора для целых чисел %d, то на экране отобразится код символа. Например:

for(ch='a'; ch>='d'; ch++) printf("%d ",ch);

на экран будет выведено:

97 98 99 100

Над символьными данными можно выполнять арифметические операции сложения и вычитания. Так, например, операция ch++; из предыдущего примера увеличивает код символа, хранящегося в переменной ch на 1. Или, выполняя операцию ch='a'-'A'; будет получена разница кода большой (А) и маленькой буквы (а) латинского алфавита. Так, например, если в символьной переменной ch1 хранится маленькая буква алфавита, то, выполнив действия:

char ch,ch1,ch2;

ch='a'-'A';

ch1='k';

ch2=ch1-сh;

printf("%c-%d %c-%d\n",ch1,ch1,ch2,ch2);

в переменную ch2 запишется та же буква, только большая, а на экран будет выведено

k-107 K-75

Строки

Значением строки является любая последовательность символов. Причем для компьютера – это набор байтов.

Строковая константа - это строка, заключенная в кавычки, например:

“Язык программирования”

Строковая переменная или строка представляет собой массив символов, поэтому и объявляется она именно так:

сhar st[30];

В квадратных скобках указывается максимальное число символов в строке st.

Под значение строковой переменной в памяти компьютера отводится МАХ байт, пронумерованных от 0 до МАХ-1, где МАХ - объявленный размер строки.

Строка отличается от несимвольного массива тем, что она заканчивается кодом 0 - признаком окончания строки. По местоположению этого специального символа определяется фактическая длина строки.

Начальное значение строки можно задать при ее объявлении следующим образом:

char s[80] = "Язык программирования Си";

Символы в кавычках будут записаны в начало массива s, а затем - признак окончания строки '\0'.

При описании строки можно также написать так:

char s[] = "Язык программирования Си";

В этом случае компилятор подсчитает символы в кавычках, выделит памяти на 1 байт больше и занесет в эту область саму строку и завершающий ноль.