Работа со строками в Си Лекция 3
Символьная информация Символьная константа – это лексема, которая состоит из изображения символов и ограничивающих апострофов. ’A’, ’a’, ’b’, ’ 9’, ’+’, … Специальные символы – управляющие последовательности: ’n’ – перевод строки; ’t’ – горизонтальная табуляция; ’r’ – возврат каретки (курсора) к началу строки; ’\’ – обратная косая черта ; ’’’ – апостроф (одиночная кавычка); ’”’ – кавычка (символ двойной кавычки); ’ ’ – нулевой символ; ’a’ – сигнал-звонок; ’b’ – возврат на одну позицию; ’f’ – перевод (прогон) страницы; ’v’ – вертикальная табуляция; ’? ’ – знак вопроса.
Символьные переменные Описание символьных переменных: char список_имен_переменных; char c, b, l; Для ввода и вывода символьных значений в форматных строках библиотечных функций printf и scanf используется спецификация преобразования %c.
Пример: необходимо вывести предложение, слова в котором разделены пробелами, и в конце которого стоит точка Текст программы : #include <stdio. h> int main() { char z, s; //z - текущий вводимый символ printf (“n Input the sentence: n“); for (z = s = ‘ ‘; z != ‘. ‘; s = z) { /* s – предыдущий символ */ scanf(“%c“, &z); if (z==‘ ‘ && s==‘ ‘) continue; printf (“%c“, z); } return 0; }
Внутренние коды и упорядоченность символов В языке принято соглашение, что везде, где синтаксис позволяет использовать целые числа, можно использовать и символы, т. е. данные типа char, которые при этом представляются числовыми значениями своих внутренних кодов. Такое соглашение позволяет сравнительно просто упорядочивать символы, обращаясь с ними как с целочисленными величинами. Таблица ASCII (American Standard Code for Information Interchange) – американский стандартный код для обмена информацией.
Таблица ASCII
Пример: Печать десятичных цифр #include <stdio. h> int main () { char z; for (z='0'; z<='9'; z++) { if (z =='0' || z=='5') printf("n"); printf(" %c-%x ", z, z); } return 0; } Результат выполнения программы: 0 -30 1 -31 2 -32 3 -33 4 -34 5 -35 6 -36 7 -37 8 -38 9 -39
Пример: Печать латинского алфавита #include <stdio. h> int main () { char z; for (z='A'; z<='Z'; z++) printf("%c", z); return 0; } Результат выполнения программы: ABCDEFGHIGKLMNOPQRSTUVWXYZ
Пример: посчитать сумму десятичных цифр в введенной последовательности символов, заканчивающейся точкой #include <stdio. h> int main () { char z; int s = 0; do { scanf("%c", &z); if ((z>='0')&& (z<='9')) s += z -'0'; } while (z!='. '); printf("%dn", s); return 0; }
Строковые константы В программе строковые константы представляются последовательностью изображений символов, заключенной в двойные кавычки. Примеры: "1234567890" "t List of users" " The string start n and the string finishn " Размещая строку в памяти, транслятор автоматически добавляет в ее конец символ '