- •3.1.1. Функции посимвольного ввода-вывода
 - •3.1.1.1.Функции посимвольного ввода
 - •Функции посимвольного стандартного ввода Функция getchar
 - •Функция fgetchar
 - •Функция ungetch
 - •Функция getch
 - •Функция getche
 - •Функции посимвольного потокового ввода Функция fgetc
 - •Функция getc
 - •Функция ungetc
 - •3.1.1.2. Функции посимвольного вывода
 - •Функции стандартного вывода Функция putchar
 - •3.1.2.Форматированный ввод-вывод
 - •3.1.2.1.Форматированный ввод Функция scanf
 - •Функция cscanf
 - •Управляющая строка функций ввода
 - •Модификатор
 - •Символы преобразования и их смысл Тип переменной int
 - •Тип переменной char
 - •Тип переменной char*
 - •Тип переменной float
 - •3.1.2.2.Форматированный вывод Функция printf
 - •Функция cprintf
 - •Отдельные поля спецификации преобразования Флаги
 - •Точность
 - •Модификатор
 - •Символы преобразования и их смысл Тип переменной int
 - •Тип переменной char
 - •Тип переменной char*
 - •Тип переменной float
 - •3.1.3. Функции построчного ввода-вывод
 - •3.1.3.1.Функции построчного ввода Функция cgets
 - •3.1.3.2.Функции построчного вывода Функция cputs
 - •Лекция №2(продолжение)
 - •4.1. Библиотека iostream
 - •Буферизованные потоки (класс streambuf )
 - •Потоковый класс ios
 - •4.2.2. Потоковый ввод
 - •4.3. Форматирование потокового ввода-вывода
 - •4.3.1. Форматирующие функции-элементы
 - •4.3.2. Флаги форматирования
 
Лекция №4
3. ФУНКЦИИ СТАНДАРТНОГО И ФОРМАТНОГО ВВОДА-ВЫВОДА
3.1. Основы ввода-вывода в языке С
Функции ввода-вывода можно разделить на 4 группы:
функции посимвольного ввода-вывода, за одно обращение к которым переносится один символ;
функции построчного ввода-вывода, за одно обращение к которым переносится ASCIIZ–строка символов;
функции блокового ввода-вывода, за одно обращение к которым переносится целый блок(или запись) информации;
функции форматированного ввода-вывода, при выполнении которых осуществляется присваивание значений переменным(ввод) или вывод представления переменных в поток.
Различают функции стандартного ввода-вывода, которые предназначены для ввода-вывода данных с клавиатуры. Кроме того отметим, что в стандартной библиотеке ввода/вывода некоторые "функции" на самом деле могут быть макросами. Это позволяет избежать накладных расходов на обращение к функции для обработки каждого символа.
Обращение к стандартной библиотеке.
Каждый исходный файл, который обращается к функции из стандартной библиотеки, должен вблизи начала содержать строку
#include <stdio.h> или(и) #include <conio.h>
В файлах stdio.h и conio.h определяются некоторые макросы и переменные, используемые библиотекой ввода/вывода. Использование угловых скобок вместо обычных двойных кавычек - указание компилятору искать этот файл в справочнике, содержащем заголовки стандартной информации (на системе UNIX обычно lusrlinelude).
Самостоятельная проработка:
3.1.1. Функции посимвольного ввода-вывода
3.1.1.1.Функции посимвольного ввода
В случае успеха функции возвращают прочитанный символ после его преобразования в int без учета знака.
Функции возвращают значение EOF в случае ошибки или когда попадают на конец файла, какой бы ввод они при этом не считывали. Стандартная библиотека полагает символическую константу EOF равной -1 (посредством #define в файле stdio.h), но проверки следует писать в терминах EOF, а не -1, чтобы избежать зависимости от конкретного значения.
Функция  | 
		Назначение  | 
	
#include <stdio.h> int getchar(void);  | 
		Возвращает символ из файла стандартного ввода. Является макроопределением через функцию getc().  | 
	
#include <stdio.h> int _fgetchar(void);  | 
		Возвращает символ из файла стандартного ввода.  | 
	
#include <stdio.h> int fgetc(FILE *stream);  | 
		Возвращает символ из открытого файла, описываемого переменной типа FILE , на которую указывает stream .  | 
	
#include <stdio.h> int getc(FILE *stream); 
  | 
		Возвращает символ из открытого файла, описываемого переменной типа FILE , на которую указывает stream . Является макроопределением через функцию _fgetc().  | 
	
#include <conio.h> int getch(void);  | 
		Выполняет ввод символа с клавиатуры без эхо- отображения на экране.  | 
	
#include <conio.h> int getche(void);  | 
		Выполняет небуферизуемый ввод символа с клавиатуры с эхо- отображением на экране.  | 
	
#include <conio.h> int ungetch(int ch);  | 
		Записывает непосредственно в буфер клавиатуры символ ch.  | 
	
#include <stdio.h> int ungetc(int c, FILE *stream);  | 
		Возвращает символ int c назад в поток stream. Следующая операция чтения из файла stream будет возвращать символ c.  | 
	
Функции посимвольного стандартного ввода Функция getchar
Самый простой механизм ввода заключается в чтении по одному символу за раз из "стандартного ввода", обычно с терминала пользователя, с помощью функции getchar.
Форма записи:
#include <stdio.h>
int getchar(void);
Функция getchar() при каждом к ней обращении возвращает следующий вводимый символ. В большинстве сред, которые поддерживают язык С++, терминал может быть заменен некоторым файлом с помощью обозначения < : если некоторая программа prog использует функцию getchar то командная строка
prog < infile
приведет к тому, что prog будет читать из файла infile, а не с терминала. Переключение ввода делается таким образом, что сама программа prog не замечает изменения; в частности строка"<infile" не включается в командную строку аргументов в argv. Макро getchar идентична getc(stdin).
Пример:
#include <stdio.h>
int main(void)
{ char ch;
printf("Enter a character followed by <Enter>: ");
ch = getchar();
printf("The character read is: '%c'\n", ch);
return 0;
}
Функция fgetchar
Функция
#include <stdio.h>
int fgetchar(void);
читает отдельный текущий символ из стандартного потока stdin и увеличивает cсоответствующий указатель (если он есть) для указания следующего считываемого символа. Функция fgetchar является эквивалентной функции fgetc(stdin).
Пример:
#include <stdio.h>
int main(void)
{ char ch;
printf("Enter a character followed by <Enter>: ");
ch = fgetchar();
printf("The character read is: '%c'\n", ch);
return 0;
}
