Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lab_C-03 (scanf).doc
Скачиваний:
1
Добавлен:
21.11.2019
Размер:
96.77 Кб
Скачать

Рубанчик В.Б.,

Михайличенко В.Н.

Лабораторная работа "Использование функции scanf для ввода чисел и символов"

5/5

Лабораторная работа

Тема: Использование функции scanf

Цель работы: Изучить особенности использования универсальной библиотечной функции форматного ввода scanf для ввода чисел и символов.

Лабораторная работа посвящена изучению организации ввода с клавиатуры чисел и символов. Символьным строкам будет посвящена отдельная работа.

Функция scanf читает и форматирует данные из стандартного входного потока stdin. Внешне обращение к ней похоже на обращение к функции printf, т.е. имеется обязательная форматная строка и список аргументов.

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

Int scanf(форматная_строка[[, аргумент...]]);

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

Замечания

1. В принципе можно вызвать scanf только с одной форматной строкой, без остальных аргументов. Но такое ее применение очень редкое и специфическое — можно убрать из входного потока без обработки заведомо ненужные символы. Поэтому обычно в вызове функции обязательно должен присутствовать хотя бы один аргумент с адресом переменной.

2. Функция scanf является представителем целого семейства библиотечных функций ввода-вывода (printf, fprintf, fscanf, sscanf и других), для которых форматная строка строится по общим правилам. Поэтому знания, полученные при изучении форматной строки для printf, позволяют легко начать пользоваться scanf.

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

ЗАДАНИЕ 1 (простой пример использования функции scanf)

1. Написать программу, в функции main которой

а) определяется переменная x типа int;

б) с помощью функции scanf вводится значение этой переменной (ввод завершить нажатием Enter);

в) с помощью функции printf введенное значение выводится на экран вместе с именем переменной: x=…

г) Перед выводом результата программа должна отдельной строкой отобразить на экране текст Zadanie 1 (во всех остальных заданиях лабораторной работы выводить номер, соответствующий номеру задания).

2. Сохранить программу в файле task1.c, откомпилировать ее и проверить правильность работы.

Поля ввода

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

Поток вводимых символов разбивается функцией scanf на отдельные группы — поля ввода.

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

Функция определяет, где заканчивается поле ввода, по следующим правилам.

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

б) Если вводятся непробельные символы, то они будут включаться в поле ввода, пока не появится первый символ, который не соответствует текущей спецификации формата, и поэтому не может быть использован при преобразовании к требуемому типу данных. Например, если в процессе ввода восьмеричного числа встретилась цифра 8 или 9, то это будет означать, что поле ввода окончилось на предыдущем символе.

в) Если в спецификации формата явно указана ширина поля N, то в поле ввода включаются очередные N последовательных символов, допускаемых используемой спецификацией.

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