Символьная константа - это символ (единственный), заключенный в одиночные кавычки, как, например, 'Х'. Значением символьной константы является численное значение этого символа в машинном представлении набора символов. Все символы упорядочены в соответствии с принятым в ПК коде (например 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.
#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.
1. Ввод и вывод символов и строк.
2. Функции для работы со строками.
3. Чем отличается инициализация символа от инициализации строки?
4. Какой заголовочный файл подключается для работы со строками?