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

Примечание

Тексты в Си записываются в кавычках. В языке Си отсутствует специальный тип для работы со строками. Вместо этого строки представляются как массив типа char. Элементы строки, хранясь в массиве, записываются в смежные ячейки памяти. В конце строки ставится отметка \0. Наличие этой отметки говорит о том, что строка должна иметь размер на единицу больший, чем количество символов. Объявляется строка указанием типа char и записью размера в [].

Пример:

char name[40];

Для работы со строками к программе необходимо подключить файл string.h.

Каждая из функций ввода/вывода использует управляющую строку и список аргументов. Управляющая строка записывается первой и заключается в кавычки. Управляющие строки и аргументы не перемешиваются. Управляющие строки прежде всего содержат указание на вывод значения того или иного типа. Их называют спецификаторами преобразования.

Форматированный ввод с клавиатуры.Оператор вызова функ­ции scanf () имеет следующую структуру:

scanf(форматная_строка, список_аргументов);

Данная функция осуществляет чтение символов, вводимых с клавиатуры, и преобразование их во внутреннее представление в соответствии с типом величин. В функции scanf () форматная строка и список аргументов присутствуют обязательно.

Оператор:

Scanf(”%f”,&a)

Здесь “%f “ - форматная строка; &а — список аргументов, со­стоящий из одного элемента. Этот оператор производит ввод чис­лового значения в переменную а.

Символьную последовательность, вводимую с клавиатуры и воспринимаемую функцией scanf (), принято называть входным потоком. Функция scanf () разделяет этот поток на отдельные вводимые величины, интерпретирует их в соответствии с указан­ным типом и форматом и присваивает переменным, содержащимся в списке аргументов.

Список аргументов — это перечень вводимых переменных, при­чем перед именем каждой переменной ставится значок &. Это знак операции «взятие адреса переменной». Подробнее смысл этого дей­ствия будет объяснен позже, а пока примем это правило фор­мально.

Форматная строка заключается в кавычки (как и для printf) и состоит из списка спецификаций. Каждая спецификация начи­нается со знака %, после которого могут следовать

* ширина_поля модификатор спецификатор

Из них обязательным элементом является лишь спецификатор. Для ввода числовых данных используются следующие специфика­торы:

d — для целых десятичных чисел (тип int);

u— для целых десятичных чисел без знака (тип unsigned int);

f — для вещественных чисел (тип float) в форме с фикси­рованной точкой;

е — для вещественных чисел (тип float) в форме с плаваю­щей точкой.

Звездочка в спецификации позволяет пропустить во входном потоке определенное количество символов. Ширина поля — целое положительное число, позволяющее определить число символов из входного потока, принадлежащих значению соответствующей вводимой переменной. Как и в спецификациях вывода для функ­ции printf () , в спецификациях вводи функции scanf () допус­тимо использование модификаторов h, l, L. Они применяются при вводе значений модифицированных типов:

hd — для ниодп значений чипа short int;

ld — для ввода значений типа long int:

lf, le - для ввода значений типа double в форме с фикси­рованной и плавающей точкой:

Lf, Le - для ввода значений типа 1ong double в форме с фиксированной и плавающей точкой.

Три величины а. b, с можно ввести одним оператором:

scanf(“%f%f%f “,&a,&b,&c);

Если последовательность ввода будет такой:

5 3.2 2.4 <Enter>

то переменные получат следующие значения: a = 5,0, b = 3,2, с = 2,4. Разделителем в потоке ввода между различными значени­ями может быть любое количество пробелов, а также другие про­бельные символы: знак табуляции, конец строки. Только после нажатия на клавишу Enterвводимые значения присвоятся соот­ветствующим переменным. До этого входной поток помещается в буфер клавиатуры и может редактироваться.

Пример ввода-вывода целого и вещественного чисел, символа и строки:

Int a;