Scanf( )

Выровненый вывод

Спецификатор точности

Спецификатор минимума ширины поля

Модификаторы формата

Таблица 2

Опциональные префиксы для целых чисел

Код Значение
h Короткое целое short
l Длинное целое long
ll Дважды длинное целое long long
I32 Тип __int32
I64 Тип __int64

Целое число, помещаемое между знаком % и кодом формата, рассматривается как спецификатор минимума ширины поля.

Пример

#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().

Например:

#include <stdio.h>

#include <clocale>

int main()

{

setlocale(LC_CTYPE,"Russian");

int x, flag = 0;

printf("Введите число ");

do{

flag = scanf("%d", &x);

if(flag!= 1) {

puts("Вы попытались ввести не число,");

puts("попробуйте ещё раз");

fflush(stdin);

}

}while(flag!= 1);

printf("Введённое Вами число %d\n", x);

return 0;

}



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: