Для функции scanf приемлема следующая форма операторной записи:
scanf ("СтрокаФормата", АдресаАргументов);
где:
СтрокаФормата состоит из необязательных символов, приводимых пользователем, и символов, определяющих собственно спецификацию (-ции) формата(-ов) преобразования значений вводимых данных в машинное представление (последовательности нулей и единиц);
АдресаАргументов – одно либо несколько имен соответственно объектов и ссылок на их адреса, перечисленных через запятую. Адрес памяти, которой поставлен в соответствие простой объект, извлекается операцией взятия адреса &, то есть описывается как &ИмяОбъекта.
Для функции scanf спецификация СтрокаФормата имеет синтаксис:
%[*][Ширина][Модификатор]Тип
где:
* – вводимое значение не присваивать переменной;
Ширина – максимальное число вводимых символов;
Модификатор – один из символов h – short int;
l – long int;
L – long double;
Тип – символ типа. Значения типов (спецификаторы) формата ввода:
Символ
формата
Тип
Описание
%i
int
целое число; оно может быть восьмеричным (с нулем слева) или шестнадцатеричное (с '0х' или '0Х' слева)
%d
int
десятичное целое число
%o
int
восьмеричное целое число
(с нулем слева или без него)
%u
unsigned int
десятичное беззнаковое целое число
%x, %X
int
шестнадцатеричное целое число
(с '0х' или '0Х' слева или без них)
%с
char
символ
%s
строка
символов
строка символов (вводится без кавычек)
%f, %F
%e, %E
%g, %G
float
десятичное вещественное число, возможно со знаком; обязательно присутствие либо десятичной точки, либо экспоненциальной части, а возможно обеих вместе
%lf, %lF
%le, %lE
%lg, %lG
double /
long double
В СтрокеФормата функции scanf могут быть указаны любые символы (кроме символов пробела, табуляции, новой строки и '%'). Причем при запросе выполняемой программы эти символы (называемые образцом ввода) должны быть введены с клавиатуры в указанной последовательности.
Пример 4.
// Программа форматированного ввода-вывода данных
#include <stdio.h>
void main(){
int t;
float p;
char s;
scanf("%c",&s);
printf("s=%c\n",s);
scanf("%d",&t);
printf("t=%d\n",t);
scanf("%f",&p);
printf("p=%f\n",p);
}
Пример 5.
//Программа форматированного ввода-вывода данных
#include <stdio.h>
void main(){
int year, /*год рождения*/
height, /*рост*/
weight;/*вес*/
printf("Введите год рождения \n");
scanf("%d", &year);
printf("Введите рост \n");
scanf("%d", &height);
printf("Введите вес \n");
scanf("%d", &weight);
printf("\nВведенные данные: год рождения %d, рост %d,