При печати диагностических сообщений желательно, чтобыони поступали на терминал, даже если стандартный вывод пос-тупает в некоторый файл или в межпроцессный канал. Чтобы лучше обрабатывать такую ситуацию, к программеточно таким же образом, как
stdin и
stdout, автоматическиприсоединяется второй выходной файл, называемый
stderr. Еслиэто вообще возможно, вывод, записанный в файле
stderr, появ-ляется на терминале пользователя, даже если стандартныйвывод направляется в другое место (на самом деле имеетсявозможность направить такие сообщения в файл, но этого непроисходит при простом перенаправлении стандартного вывода). Программа может также использовать функцию
exit изстандартной библиотеки, обращение к которой вызывает завер-шение выполнения программы. Аргумент функции
exit доступенпрограмме, вызвавшей программу пользователя в качестве под-задачи, так что она может проверить успешное или неудачноезавершение данной программы. По соглашению, величина 0 вкачестве возвращаемого значения свидетельствует о том, чтовсе в порядке, а различные ненулевые значения являются приз-наками ненормальных ситуаций. Функция
exit вызывает функцию fclose для каждого откры-того выходного файла, с тем чтобы вывести всю помещенную вбуферы выходную информацию, а затем вызывает функцию _
exit. Функция _
exit приводит к немедленному завершению без очистки
-61- каких-либо буферов; конечно, при желании к этой функцииможно обратиться непосредственно.
Ввод и вывод строк
Стандартная библиотека содержит функцию
fgets. Врезультате обращения
fgets (
line,
maxline,
fp) следующая строка ввода (включая символ новой строки) считы-вается из файла
fp в символьный массив
line; самое большее
maxline -
1 символ будет прочитан. Результирующая строказаканчивается символом
\0. Обычно функция
fgets возвращает
line; в конце файла она возвращает
NULL. Предназначенная для вывода функция
fputs записываетстроку (которая не обязана содержать символ новой строки) вфайл:
fputs (
line,
fp) Функции
gets и
puts являются упрощенными вариантами
fgets и
fputs, которые работают с файлами стандартноговвода и вывода и не проверяют длину строки;
gets не записы-вает символ новой строки в память, а
puts дописывает этотсимвол в файл в конце строки:
gets (
line)
puts (
line)
Функция ungetc
Стандартная библиотека содержит функцию, возвращающуюпоследний считанный символ. В результате обращения
ungetc (
c,
fp) символ
c возвращается в файл
fp. Позволяется возвращать вкаждый файл только один символ.