
- •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. Флаги форматирования
3.1.2.Форматированный ввод-вывод
Функция |
Назначение |
Функции ввода |
|
#include <stdio.h> int scanf(const char *format[, address, ...]); |
Выполняет ввод с клавиатуры c буферизацией символов ввода. |
#include <conio.h> int cscanf(char *format[, address, ...]); |
Выполняет ввод с клавиатуры без буферизации символов ввода. |
Функции вывода |
|
#include <stdio.h> int printf(const char *format[, argument, ...]); |
Выполняет вывод с преобразованием по заданному формату, возвращает число обработанных полей. |
#include <conio.h> int cprintf(const char *format[, argument, ...]); |
Выполняет вывод с преобразованием по заданному формату, возвращает число выведенных байтов
|
3.1.2.1.Форматированный ввод Функция scanf
Осуществляющая ввод функция scanf является аналогом printf и позволяет проводить в обратном направлении многие из тех же самых преобразований. Функция
Форма записи:
#include <stdio.h>
int scanf(const char *format[, address, ...]);
упрощенно
scanf(УправляющаяСтрока, arg1, arg2, ...)
Функция scanf читает символы из стандартного ввода, интерпретирует их в соответствии с форматом, указанном в форматной (или управляющей) строке, и помещает результаты в остальные аргументы. Управляющая строка описывается ниже; другие аргументы, каждый из которых должен быть указателем, определяют, куда следует поместить соответствующим образом преобразованный ввод. Управляющая строка обычно содержит спецификации преобразования, которые используются для непосредственной интерпретации входных последовательностей.
Функция cscanf
Функция
int cscanf(char *format[, address, ...]);
упрощенно
cscanf(УправляющаяСтрока, arg1, arg2, ...)
выполняет форматированный ввод с клавиатуры с эхо- отображением. В отличие от функции scanf() не выполняет буферизацию символов ввода: все символы, вводимые с клавиатуры, доступны программе немедленно. Ввод пробела рассматривается как завершение ввода.
Управляющая строка функций ввода
Управляющая строка может содержать:
пробелы, табуляции или символы новой строки ("символы пустых промежутков"), которые игнорируются.
Обычные символы (не %), которые предполагаются совпадающими со следующими отличными от символов пустых промежутков символами входного потока.
Спецификации преобразования, состоящие из символа %, необязательного символа подавления присваивания *, необязательного числа, задающего максимальную ширину поля и символа преобразования.
Спецификация преобразования управляет преобразованием следующего поля ввода. Нормально результат помещается в переменную, которая указывается соответствующим аргументом. Если, однако, с помощью символа * указано подавление присваивания, то это поле ввода просто пропускается и никакого присваивания не производится. Поле ввода определяется как строка символов, которые отличны от символов простых промежутков; оно продолжается либо до следующего символа пустого промежутка, либо пока не будет исчерпана ширина поля, если она указана. Отсюда следует, что при поиске нужного ей ввода, функция scanf будет пересекать границы строк, поскольку символ новой строки входит в число пустых промежутков.
Символ преобразования определяет интерпретацию поля ввода; согласно требованиям основанной на вызове по значению семантики языка С++ соответствующий аргумент должен быть указателем. Допускаются следующие символы преобразования.