Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика 1.docx
Скачиваний:
11
Добавлен:
26.09.2019
Размер:
364.88 Кб
Скачать

Потоковый ввод-вывод

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

На уровне потокового ввода-вывода обмен данными произ­водится побайтно. Такой ввод-вывод возможен как для собст­венно устройств побайтового обмена (печатающее устройство, дисплей), так и для файлов на диске. Хотя устройства внешней памяти, строго говоря, являются устройствами поблочного об­мена, т.е. за одно обращение к устройству производится считывание или запись фиксированной порции данных, операционная система и драйвер устройства имитируют побайтовый обмен.

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

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

При работе с потоком можно производить следующие дейст­вия:

  • открывать и закрывать потоки (связывать указатели на по­токи с конкретными файлами);

  • вводить и выводить: символ, строку, форматированные данные, порцию данных произвольной длины;

  • анализировать ошибки потокового ввода-вывода и условие достижения конца потока (конца файла);

  • управлять буферизацией потока и размером буфера;

  • получать и устанавливать указатель (индикатор) текущей позиции в потоке.

Для того чтобы можно было использовать функции библио­теки ввода-вывода языка Си, в программу необходимо включить заголовочный файл stdio.h (#include <stdio.h>), который содер­жит прототипы функций ввода-вывода, а также определения констант, типов и структур, необходимых для работы функций обмена с потоком.

Функции форматированного ввода-вывода.

Функции форматированного ввода-вывода объявлены в хэдере stdio.h.

Функция printf().

Функция printf осуществляет форматированный вывод информации на консоль (экран).

Синтаксис:

int printf (const char* FormatString, [arg1, arg2,]…);

  • arg1, arg2, и т.д. - это список аргументов, значения которых необходимо напечатать.

  • FormatStringформатирующая строка. Это строка символов, задающая формат печати аргументов.

Например:

printf("значение числа пи равно %f\n",pi);

Список аргументов содержит только один элемент pi.

printf("значение числа пи равно %f\n, число е=%f",pi,e);

Список аргументов содержит 2 параметра - pi и e.

Форматирующая строка содержит информацию двух различных видов:

  • Символы, печатаемые напрямую. В их число также входят спецсимволы (\n – перевод строки, \t – табуляция)

  • Спецификаторы форматирования, начинающиеся с знака % (%f)

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

Каждому аргументу из списка, следующего за форматирующей строкой, должен соответствовать один спецификатор форматирования.

Спецификатор форматирования имеет следующий синтаксис: