Справочная система C guide

Форматированный ввод


Символы преобразования и формат вывода по умолчанию

f /—/ddd.ddd (число с фиксированной точкой) .

е / —7 d ddddde {±} dd (число в экспоненциальном формате).

Е /-7ddddddE{i}dd

g Наиболее короткий формат из f или е.

G Наиболее короткий формат из f или Е. Типы аргументов float и double не различаются. Числа с плавающей точкой печатаются в десятичном формате. Примеры

%f 1234.567890

%.lf 1234.6

%Е 1.234568Е+03

%.3е 1.235е+03

%g 1234.57

Замечание. Чтобы вывести символ %, необходимо в форматной строке задать два символа %%.



Пример

printf("%5.2f%%", 99.44);

В результате выполнения данной функции будет напечатано

99.44%

Для описания функций форматированного ввода scanf, fscanf, sscanf используются следующие метаобоэначения:

1t> Пробел (символ ^ на самом деле не печатается!) { \ Используется только один из перечисленных элементов. [] Используется только один или не используется ни одного

из перечисленных элементов. Замечание. Для использования функций, описанных в этом разделе, в программу необходимо включить команду препроцессора

#mclude <stdio.h>

Функции scanf, fscanf и sscanf могут иметь переменное число аргументов. Число и типы аргументов должны соответствовать спецификациям преобразования в форматной строке.

scanf - ввести данные из стандартного файла ввода stdin в соответствии с форматной строкой format, присваивая значения переменным, заданным указателями pointer. Определение: mt scanf (format [.pointer]...) char * format;

fscanf - ввести данные из потока stream в соответствии с форматной строкой format

Определение: mt fscanf (stream, format [.pointer]...) FILE •stream, char *format;

sscanf - читать данные из строки s в соответствии с форматной строкой format. Определение: int sscanf (s, format [.pointer]...)

char *s, *format,

Примеры

Входной поток содержит символы:

12.45 1048.73 АЕ405271 438 Вызов функции.

float x; char id [8+Г]; int n;

scanf("%f%*f%8[A-ZO-9]%d", &x,id, &n);

Переменной х присваивается значение 12.45, символы 1048.73 пропускаются, переменной id присваивается строка символов "АЕ405271", переменной n - целое значение 438.

Входной поток содержит символы:

25 54.32Е-01- monday Вызов функции:

int 1; float x, char name [50];

scanf ("%d%f%s", &i, &x, name);

Переменной i присваивается значение 25, переменной х - значение 5.432, переменной name - строка "monday"

Входной поток содержит:

56 789 0123 56АВС

Вызов функции:

int i, float x; char name [50];

scanf ("%2d%f%*d,% [0-9]", &i, &x, name);

Переменной i присваивается значение 56, переменной х — значение 789.0, символы 0123 пропускаются, строка "56" присваивается переменной name. Последующий ввод символа из этого потока функцией getchar дает значение 'А'.

Содержание раздела