double arrow

Обращение к стандартной библиотеке


Каждый исходный файл, который обращается к функции изстандартной библиотеки, должен где то в начале содержатьстроку #include <stdio.h> В файле stdio.h определяются некоторые макросы и переменные,используемые библиотекой ввода/вывода.

Стандартный ввод и вывод

Самый простой механизм ввода заключается в чтении поодному символу за раз из "стандартного ввода" (обычно с тер-минала пользователя) с помощью функции getchar. Функцияgetchar() целого типа при каждом к ней обращении возвращаетследующий вводимый символ. В большинстве систем, которыеподдерживают язык Си, терминал может быть заменен некоторымфайлом с помощью обозначения "<". Если некоторая программаprog использует функцию getchar, то командная строка prog <infile приведет к тому, что prog будет читать из файла infile, а нес терминала. Переключение ввода делается таким образом, чтосама программа prog не замечает изменения; в частностистрока "<infile" не включается в командную строку аргументов(см. следующую главу). Переключение ввода оказывается неза-метным и в том случае, когда вывод поступает из другой прог-раммы через межпроцессный канал. Например, командная строка otherprog | prog прогоняет две программы, otherprog и prog, так, что -52- стандартным вводом для prog служит стандартный вывод other-prog. Функция getchar возвращает значение EOF, когда достига-ется конец файла, какой бы ввод она при этом не считывала.Стандартная библиотека полагает символическую константу EOFравной -1 (посредством #define в файле stdio.h), но проверкиследует писать в терминах EOF, а не -1, чтобы избежать зави-симости от конкретного значения. Вывод можно осуществлять с помощью функции putchar(c),помещающей символ 'c' в "стандартный вывод", который поумолчанию является терминалом. Вывод можно при вызове прог-раммы направить в некоторый файл с помощью обозначения ">".Если prog использует putchar, то командная строка prog > outfile приведет к записи стандартного вывода в файл outfile, а нена терминал. В системе ДЕМОС можно также использовать межп-роцессный канал. В стандартной библиотеке ввода/вывода "функции" getcharи putchar на самом деле могут быть макросами. Это позволяетизбежать накладных расходов на обращение к функции для обра-ботки каждого символа.

Сейчас читают про: