Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
otvety_na_voprosy.docx
Скачиваний:
8
Добавлен:
05.06.2015
Размер:
121.33 Кб
Скачать
  1. Форматированный консольный ввод-вывод

Стандартная библиотека С содержит две функции, выполняющие форматированный ввод и вывод стандартных типов данных: printf() иscanf(). Термин форматированный подразумевает, что эти функции могут писать и читать данные в разных форматах, которыми можно управлять. Функцияprintf() используется для вывода данных на консоль,scanf() – для чтения данных с консоли. Какprintf(), так иscanf() могут работать с любыми стандартными типами и строками.printf( )имеет следующий прототип:intprintf(constchar*форматная строка, …);

Первый аргумент форматная строкаопределяет способ вывода последующих аргументов. Он содержит два типа элементов: символы, выводимые на экран, и спецификаторы формата, определяющие способ вывода аргументов, следующих за форматной строкой. Спецификаторы формата начинаются со знака процент, за которым следует код формата.

Код

%c

%d

%i

%e

%E

%f

%lf

%g

%G

%o

%s

%u

%x

%X

%p

%n

%%

Формат

Символ

Знаковое десятичное целое число

Знаковое десятичное целое число

Научная нотация (e– строчная)

Научная нотация (E– прописная)

Десятичное число с плавающей точкой

Десятичное число с плавающей точкой двойной точности

Использует или %e, или %f, соответствующее более короткому

представлению

Использует или %E, или %f, соответствующее более короткому

представлению

Беззнаковое восьмеричное число

Строка символов

Беззнаковое десятичное число

Беззнаковое шестнадцатиричное число (строчные буквы)

Беззнаковое шестнадцатиричное число (прописные буквы)

Вывод указателя

Ассоциированный аргумент – это указатель на целое, в которое

записывается число уже выведенных символов

Выводит знак %

Должно быть полное соответствие между числом аргументов и числом спецификаторов формата, а также спецификаторы формата и аргументы должны соответствовать друг другу.

Функция printf( )возвращает число напечатанных символов. В случае ошибки она возвращаетEOF.

Печать символов

Для печати отдельных символов используется %c. Для печати строки %s.

Вывод чисел

Пример

#include <stdio.h>

int main(void)

{

double f;

for(f=1.0; f<1.0e+10; f=f*10)

printf("%g ", f);

getchar();

unsigned int num;

for(num=0; num<255; num++) {

printf("%o ", num);

printf("%x ", num);

printf("%X ", num);

}

getchar();

return 0;

}

Вывод адресов

Пример

#include <stdio.h>

int main(void)

{

/* Вывод адресов */

int sample;

printf("%p ", &sample);

getchar();

return 0;

}

Спецификатор %n Пример

#include <stdio.h>

int main(void)

{

int sample; /* Спецификатор %n */

printf("This%n is a test\n", &sample);

printf("%d\n", sample);

getchar();

return 0;

}

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

Код

Значение

h

Короткое целое short

l

Длинное целое long

ll

Дважды длинное целое longlong

I32

Тип __int32

I64

Тип __int64

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

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

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

Пример

#include <stdio.h>

int main(void)

{

double item;

item = 10.12304;

printf(“%f\n”, item);

printf(“%10f\n”, item);

printf(“%012f\n”,item);

return0;

}

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

Спецификатор точности состоит из точки, за которой следует целое число.

#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”);

return0;

}

В результате получим

123.1235 00001000 Thisisasimpl

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

Модификаторы * и #

Помещение # перед g, G, f, e или E обеспечивает наличие десятичной точки в случае отсутствия дробной части. Если перед спецификатором o поместить #, то выведенное число будет иметь в начале 0. Если перед спецификаторами формата x или X поставить #, то шестнадцатеричное число будет печататься с префиксом 0x. Нельзя применять # к другим спецификаторам формата.

Помимо констант, спецификаторы минимальной ширины поля и точности могут предоставляться аргументами printf(). Для реализации этого следует использовать *.

printf(“%*.*f”, 10, 4, 123.4)

scanf( )

Стандартный ввод с консоли, как правило, осуществляется с помощью scanf(). Она читает все стандартные типы данных и автоматически преобразует числа к правильному внутреннему формату. Стандартный видscanf() следующий:

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]