Функция getchar() считывает один символ с клавиатуры:
char letter;
letter = getchar();
putchar(letter);
Проблема пропуска символа.
Несколько символом, идущих подряд образуют строку. Более подробно строки будут изучены в соответствующей теме, а сейчас мы рассмотрим базовые сведения, касающиеся строк. Итак, для объявления строки необходимо указать ее имя и максимальный размер:
char str[100];
char book[50];
Задать значение строки можно при ее объявлении:
char str[] = "Математика – царица наук.";
Вывести строку на экран можно следующими способами:
printf("%s", str);
puts(str);
puts("Заседание продолжается!");
printf("Командовать парадом буду я!");
Обратите внимание на то, что строки заключаются в двойные кавычки, а символы – в апострофы. Это нужно учитывать при работе с ними. Ниже приведены примеры.
//Корректные записи
char str[] = "Кашу маслом не испортишь";
puts("Назвался груздем — полезай в кузов");
printf("%s", "Баба с возу — кобыле легче");
printf("Продукт класса %с", 'A');
putchar('С'); putchar('ы'); putchar('р');
//Некорректные записи
char str[] = 'Кашу маслом не испортишь';
puts('Назвался груздем — полезай в кузов');
printf("%s", 'Баба с возу — кобыле легче');
printf("Продукт класса %с", "A");
putchar("С"); putchar("ы"); putchar("р");
В некоторых средах разработки русские символы могут отображаться некорректно. Попробуйте запустить следующий пример:
printf("Столовая наполнилась неприятным\n");
printf("синим сигарным дымом. Пес дремал,\n");
printf("уложив голову на передние лапы.\n");
Если текст на экране отобразился нормально, то дальше можно не читать, однако, если вы увидели нечто подобное:
то вам следует изучить данный раздел, чтобы научиться отображать русские символы корректно. Попробуйте добавить в программу следующее:
#include <locale.h>
…
setlocale(LC_ALL, "Russian");
printf(…);
…
После этого текст должен отобразиться так, как требуется:
Однако это еще не все. Рассмотрим пример:
setlocale(LC_ALL, "Russian");
char name[20];
puts("Введите свое имя:");
gets(name);
puts("Ваше имя:");
puts(name);
Введенное имя выведется некорректно, поскольку кодировка для ввода неправильная:
Для устранения проблемы можно поступить так:
#include <windows.h>
…
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
Возможно, понадобится также сменить шрифт консоли. Поэкспериментируйте.
КОНТРОЛЬНЫЕ ВОПРОСЫ
1. Как поместить комментарий в программу, написанную на языке Си?
2. Перечислите известные вам типы данных, которые есть в языке Си? Какой размер в памяти они занимают? Какие значения они могут принимать?
3. Объясните, чем отличаются ключевые слова от идентификаторов?
4. Какие правила нужно соблюдать при создании имен переменных? Приведите несколько корректных и некорректных имен; объясните, какие правила нарушают некорректные имена.
5. Объясните, как работает функция printf(). Что такое спецификаторы и модификаторы? Приведите примеры.
6. Что такое спецсимволы или управляющие последовательности? Приведите примеры.
7. Как задать количество знаков после запятой для выводимого вещественного числа?
8. Как используется модификатор * (звездочка) в функциях printf(), а не в scanf()? Приведите примеры.
9. Как используется функция scanf()? Объясните принцип ее работы.
10. Какие функции могут быть использованы для ввода с клавиатуры символов и строк? Приведите примеры.
ТРЕНИРОВОЧНЫЕ ЗАДАНИЯ
Вывести на экран значения целой переменной x, вещественной переменной y и символьной переменной c.
2. Вывести на экран слово «программирование», используя только функцию putchar().
3. Ввести с клавиатуры три числа и вывести их сумму.
4. Вывести на экран размеры типов int, float, char, double и bool. Использовать функцию sizeof().
5. Написать программу, которая принимает с клавиатуры имя и фамилию, а затем выводит полное имя человека.