- •Предисловие.
- •1. Введение.
- •1.1. История создания языка си.
- •1.2. Стандарты языка си.
- •2. Основные сведения, необходимые для создания программ на языке си.
- •2.1 Процесс создания исполняемого файла.
- •2.2 Распределение памяти программы.
- •2.3 Некоторые основные понятия.
- •2.4 Данные.
- •2.5 Структура простой программы.
- •3. Определение размеров типов данных и объектов.
- •4. Строки и строковые константы.
- •5. Директива препроцессора # define.
- •6. Функции форматированного ввода – вывода.
- •6.1 Функция форматированного вывода printf().
- •6.2 Функция форматированного ввода scanf().
- •7. Операции и операторы.
- •7.1 Арифметические операции
- •7.4 Порядок выполнения операций.
- •8. Выражения и операторы
- •8.1 Выражения.
- •8.2 Операторы.
- •8.3 Составные операторы.
- •8.4 Преобразование типов.
- •8.5 Операция приведения типов.
- •9. Функции ввода и вывода символов.
- •9.1 Функции getchar() и putchar().
- •9.2 Функции getch() и getche().
- •9.3 Ввод и вывод последовательности символов.
- •9.4 Подсчет символов, вводимых с клавиатуры.
- •9.5 Вывод символов из вводимого с клавиатуры файла.
- •9.6 Переключение ввода-вывода данных.
- •10. Принятие решений.
- •10.1 Оператор если (if).
- •10.2 Оператор если - иначе (if else).
- •10.3 Множественный выбор на основе операторов if, else.
- •10.5 Приоритеты операций отношения.
- •10.6 Логические операции (and, or, not).
- •10.7 Операция условия ?:.
- •10.8 Множественный выбор на основе операторов switch, break, default.
- •11. Циклы.
- •11.1 Цикл пока (while).
- •11.2 Цикл для (for).
- •11.4 Операция запятая ,.
- •11.5 Цикл делай пока (do while).
- •11.6 Вложенные циклы.
- •11.7 Операторы выход из структуры (break), продолжение (continue), безусловный переход (to go).
- •Литература.
- •Оглавление.
9. Функции ввода и вывода символов.
9.1 Функции getchar() и putchar().
Функция getchar() получает один символ, поступающий с пульта терминала (клавиатуры), и передает его выполняющейся в данный момент программе.
Функция putchar() получает один символ, поступающий из выполняющейся в данный момент программы, и выводит его на экран дисплея.
/* ПРОГРАММА:
get_put.c - ввод символа с клавиатуры и вывод его на экран дисплея.
*/
/*#############################################*/
/*============================= include */
#include<stdio.h>
/*============================= main() */
main()
{/*.---------------------------.begin main() */
char ch;
ch = getchar(); /* 1. ввод одного символа с клавиатуры в программу */
putchar (ch); /* 2. вывод символа на экран дисплея */
return 0;
}/*.---------------------------.end main() */
/*#############################################*/
РЕЗУЛЬТАТ РАБОТЫ ПРОГРАММЫ.
Ввод символа с клавиатуры и вывод его на экран дисплея.
ПОЯСНЕНИЯ К ПРОГРАММЕ.
-
Функция getchar() аргументов не имеет (т. е. при ее вызове в круглые скобки не помещается никакая величина). Функция getchar() получает с клавиатуры очередной символ и возвращает его значение выполняемой программе. Например, если указанная функция получает с клавиатуры букву Q, ее значением в данный момент будет эта буква. Оператор 1, присваивает значение функции getchar() переменной ch.
-
Функция putchar() имеет один аргумент. При ее вызове необходимо в скобках указать символ, который требуется вывести на печать. Аргументом функции putchar() может быть одиночный символ (включая знаки представляемые управляющими последовательностями), переменная или функция, значением которой является одиночный символ.
putchar ('S'); /* вывод на экран символа S */
putchar ('\n'); /* перевод строки */
putchar ('\007'); /* сигнал - звонок */
putchar (ch); /* вывод на экран переменной символьного типа */
putchar (getchar()); /* ввод символа с клавиатуры и вывод его на экран */
Наша программа может быть представлена в следующем виде:
#include<stdio.h>
main()
{/*.---------------------------.begin main() */
putchar (getchar());
return 0;
}/*.---------------------------.end main() */
Такая запись компактна и не требует введения вспомогательной переменной char ch;. Кроме того, в результате компиляции такая программа оказывается более эффективной.
***************************************************************
ПРИМЕЧАНИЕ.
Результат работы функции getchar() зависит от того, есть ли или нет в системе программирования буферизованный ввод.
При выполнении данной программы (любой из двух ее версий) вводимый символ в одних вычислительных системах немедленно появляется на экране («эхо - печать»), в других же ничего не происходит до тех пор, пока вы не нажмете клавишу [ввод (Enter)].
Первый случай относится к так называемому небуферизованному (прямому) вводу, означающему, что вводимый символ оказывается немедленно доступным ожидающей программе.
Второй случай служит примером буферизованного ввода, когда вводимые символы собираются и помещаются в некоторую область временной памяти, называемую "буфером". Нажатие клавиши [ввод] приводит к тому, что блок символов (или один символ, как это происходит в нашей программе) становится доступным программе.
Вследствие неоднозначности работы функции getchar() в различных системах программирования ее стараются не использовать в интерактивных режимах работы, а стремятся использовать функции небуферизованного (прямого) ввода getch() и getche().
Зачем нужны буферы? Во-первых, оказывается, что передачу нескольких символов в виде одного блока можно осуществить гораздо быстрее, чем передавать их последовательно по одному. Во-вторых, если при вводе символов допущена ошибка, вы можете воспользоваться корректирующими средствами терминала (например, клавишей Backspace), чтобы ее исправить. Когда вы нажмете клавишу [ввод], будет произведена передача откорректированной строки.