Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
YAZbIki.doc
Скачиваний:
8
Добавлен:
16.03.2015
Размер:
758.78 Кб
Скачать

Вопрос 11

11. Стандартная библиотека C. Функции ввода-вывода, форматный ввод-вывод.

Стандартная библиотека C

Содержимое и форма стандартной библиотеки С задается Стандартом ANSI/ISO. Т.е. Стандарт С определяет тот набор функций, который должен поддерживать любой стандартный компилятор. Однако при этом большинство компиляторов предоставляют дополнительные функции, которые не специфицированы в Стандарте. Например, многие компиляторы имеют функции работы с графикой, подпрограммы, управляемые с помощью мышки, и другие им подобные, которых нет в Стандарте С. Пока программа не переносится в другую вычислительную среду, эти нестандартные функции можно использовать без каких-либо негативных последствий. Но если программа доллжна быть переносимой, применение таких программ нужно ограничить. На самом деле практически все нетривиальные программы С используют нестандартные функции, так что не нужно пугаться и избегать их только из-за того, что они не входят в стандартную библиотеку функций.

Функции ввода/вывода

Простейший способ выполнить чтение из файла или запись в файл – использовать функции getc() илиputc().

Функция getc() выбирает из файла очередной символ; ей нужно только знать указатель на файл, например,charSymb=getc(f_in);

Если при обработке достигается конец файла, то функция getc() возвращает значениеEOF(endoffile).

Функция putc() заносит значение символаSymbв файл, на который указываетf_out. Формат вызова функции:putc(Symb,f_out);

В этом примере для чтения из файла используется переменная ptr. При открытии файла производится проверка. Если переменнойptrприсвоено значениеNULL, то файл не найден; на экран выводится соответствующее сообщение, и программа завершается. Еслиptrполучила ненулевое значение, то файл открыт. Далее выполняется чтение символов из файла до тех пор, пока не будет достигнут конец файла (!feof(ptr)). Прочитанные символы помещаются в переменнуюch, а затем выводятся на экран.

Функции fscanf() иfprintf() выполняют форматированный ввод/вывод. Чтение из файла выполняет функцияfscanf():

fscanf(f_in,[строка формата],[список адресов переменных]);

Функция возвращает количество введенных значений или EOF.

Запись в файл осуществляет функция fprintf():

fprintf(f_out,[строка формата],[список переменных, констант]);

Возвращает количество выведенных байт (символов) или EOF.

Строка формата функций fscanf() иfprintf() формируется так же, как было описано ранее в гл. 5, посвященной консольному вводу/выводу и функциямprintf() иscanf().

Следует заметить, что вызов функции

fscanf(stdin,[строка формата],[список адресов переменных]);

эквивалентен вызову

scanf([строка формата],[список адресов переменных]);

Аналогично,

fprintf(stdout, [строка формата],[список переменных, констант]);

эквивалентно

printf([строка формата],[список переменных, констант]);

Чтение чисел из файла выполняется в переменную numbдо тех пор, пока не будет достигнут конец файла. Одновременно ведется подсчет количества прочитанных символов в переменнойcountи накопление суммы прочитанных чисел в переменнойS. ПеременныеSиcountцелые, поэтому для правильного вычисления среднего арифметического, необходимо выполнить преобразование одной из этих переменных в форматdouble

Общие замечания

Ввод/вывод информации в языке C осуществляется с помощью функций, объявленных в заголовочных файлах и, в принципе, способ их организации нас не интересует. Единственно, что необходимо знать программисту, это правила использования этих функций. Простейший способ воспользоваться функцией – написать обращение к этой функции.

Как уже отмечалось, основные функции ввода/вывода задаются в заголовочном файле stdio.h. Познакомимся с двумя полезными функциями, объявленными в этом файле и выполняющими следующие действия:

printf() – консольный вывод

scanf() – консольный ввод.

К началу главы

5.2. Функция форматированного вывода printf()

Структура (синтаксис) обращения к функции:

printf ("строка формата", арг1, арг2, …, аргN);

В качестве аргументов функции арг1…аргN используются идентификаторы переменных или выражения. Список аргументов может быть пустым.

Строка формата записывается в двойных кавычках и может содержать:

  • любой текст;

  • спецификаторы форматов (по количеству аргументов), обозначаются символом %, содержат информацию о типе выводимого значения и его модификации;

  • управляющие символы.

Напомним, что управляющий символ, или ESC-последовательность, формируется из символа обратной наклонной черты\, называемого в языке C escape-символом, и латинской буквы. Примеры управляющих последовательностей приведены в п. 1.3.1.

К началу главы

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