Целое число, помещаемое между знаком % и кодом формата, рассматривается как спецификатор минимума ширины поля.
Пример
#include <stdio.h>
int main(void)
{
double item;
item = 10.12304;
printf(“%f\n”, item);
printf(“%10f\n”, item);
printf(“%012f\n”,item);
return 0;
}
Спецификатор точности состоит из точки, за которой следует целое число.
#include <stdio.h>
int main(void)
{
printf(“%.4f\n”, 123.1234567);
printf(“%3.8d\n”, 1000);
printf(“%10.15s\n”, “This is a simple test”);
return 0;
}
В результате получим
123.1235
This is a simpl
Модификаторы * и #
Помещение # перед g, G, f, e или E обеспечивает наличие десятичной точки в случае отсутствия дробной части. Если перед спецификатором o поместить #, то выведенное число будет иметь в начале 0. Если перед спецификаторами формата x или X поставить #, то шестнадцатеричное число будет печататься с префиксом 0x. Нельзя применять # к другим спецификаторам формата.
Помимо констант, спецификаторы минимальной ширины поля и точности могут предоставляться аргументами printf(). Для реализации этого следует использовать *.
printf(“%*.*f”, 10, 4, 123.4)
Стандартный ввод с консоли, как правило, осуществляется с помощью scanf(). Она читает все стандартные типы данных и автоматически преобразует числа к правильному внутреннему формату. Стандартный вид scanf() следующий:
int scanf(const char * форматная_строка, …);
форматная_строка определяет способ чтения значений в переменные, на которые указывает список аргументов. Форматная строка состоит из трёх типов символов:
- Спецификаторы формата
- Специальные символы
- Стандартные символы
Функция scanf( ) возвращает число введённых полей. Она возвращает EOF, если обнаруживается преждевременный конец файла.
Спецификаторы формата перечислены в следующей таблице:
Код
%c
%d
%i
%e
%f
%lf
%g
%o
%s
%x
%p
%n
%u
%[]
Значение
Читает одиночные символы
Читает десятичное число
Читает десятичное число
Читает число с плавающей запятой
Читает число с плавающей запятой
Читает число с плавающей запятой двойной точности
Читает число с плавающей запятой
Читает восьмеричное число
Читает строку
Читает шестнадцатеричное число
Читает указатель
Получает целочисленное значение, равное числу прочитанных символов
Читает беззнаковое целое
Сканирует множество символов
В scanf( )следует передавать адреса. Это означает, что все аргументы должны быть указателями на переменные. Например, для чтения целого в переменную count надо использовать следующий вызов scanf():
scanf(“%d”, &count);
Во избежание ошибок при вводе из-за несовпадения форматов, можно пользоваться значением возвращаемым функцией scanf().