Символьный тип данных в языке C. Управляющие символы

По таблице ASCII символы с номерами (кодами) от 0 до 127 жестко определены. В этом диапазоне номера присвоены символам цифр, английским маленьким и большим буквам, знакам препинания, а также другим символам ('#', '%', '~' и т. п.). Здесь же заданы коды для различных управляющих символов, которые никак не экране не отображаются, а что-то делают (например, создают новою строку или отступ, подают звуковой сигнал и др.). Расширенная таблица ASCII кодирует символы национальных алфавитов (например, русского языка) числами, лежащими в диапазоне от 128 до 255.

В Си при обращении по числовым кодам доступна только основная часть ASCII, т. е. символы с кодами от 0 до 127. Хотя тип char может принимать числовые значения от -128 до 127.

Символы цифр от '0' до '9' имеют последовательные коды от 48 до 57. Этот факт обычно используют для преобразования символов цифр в числа. Если известно, что символ '0' имеет код 48, а был задан символ '5', имеющий код 53, то если вычесть из 53 число 48, получим число 5. Таким образом, выполнив операцию '5' - '0', получим число 5.

Английские большие буквы (прописные) имеют последовательные коды от 65 (A) до 90 (Z), маленькие (строчные) — от 97 до 122.

  1. Напишите программу, в которой объявлены только две переменные символьного типа. Одной переменной присвоен, например, символ '4', а второй — '7'. Функция printf() должна выводить на экран разность и сумму чисел, которые были представлены символами и присвоены переменным.

  2. Переменная not_num содержит строку из трех символов-цифр, например "528". Необходимо получить из этой строки соответствующее ему число и присвоить его переменной num. Вывести на экран результат выражения num - 10. (Подсказка: строка — это массив символов, следовательно, вы можете извлекать символы цифр по их индексам; при вычислении числа первый символ массива, преобразованный в число, будет означать количество сотен, второй — десятков, а третий — единиц.)

  3. Известно, что символ A английского алфавита имеет код 65. Напишите программу, определяющую, какие символы в этом алфавите стоят на 5, 12 и 19 местах.

Управляющие символы

Специальные, или управляющие, символы в программном коде обозначаются двумя знаками, т. к. одним их обычно обозначить невозможно. Но по сути представляют собой один символ. Например, букву 'a' можно обозначить одним символом, но как обозначить символ создания новой строки, если ему не соответствует ни один знак? Приходится представлять непечатаемый символ комбинацией пары других символов: '\n'.

Ниже перечислен ряд управляющих символов (не все) и то, что они делают:

'\n' — создание новой строки и переход на нее;

'\t' — табуляция (отступ, соответствующий нескольким пробелам);

'\r' — возврат каретки (перевод курсора в первую позицию текущей строки);

'\b' — возврат курсора на один символ назад с удалением этого символа.

В программном коде, помимо управляющих, специальной парой символов могут записываться некоторые вполне обычные символы, такие как кавычки, одиночные кавычки, обратная косая черта и др. Многие из них невозможно вставить просто так внутрь строки, т. к. они что-то значат с точки зрения синтаксиса языка. Например, обратная косая черта в строке сообщает, что начинается запись специального символа, двойная кавычка обозначает начало или конец строки. Поэтому, чтобы убрать синтаксическую роль таких символов, их экранируют с помощью обратного слэша.

'\\' — обратный косая черта;

'\'' — одиночная кавычка;

'\"' — двойная кавычка (не в строке можно просто '"');

'\0' — пустота, символ с кодом 0 по таблице ASCII.

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

  2. Выведите на экран символьное обозначение управляющих символов и их номера по таблице ASCII. Пример вывода:

    \n - 10
    \t - 9 
    \b - 8 
    \r - 13
    
  3. Выясните экспериментальным путем, как вывести на экран символ %. (Существует два способа.)

Курс с решением задач:
pdf-версия


Основы языка C. Курс




Все разделы сайта