Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
100-105.docx
Скачиваний:
4
Добавлен:
11.09.2019
Размер:
33.41 Кб
Скачать

Переназначение ввода и вывода.

Система может читать с клавиатуры так же, как она читает из дискового или ленточного файла.

Процесс изменения стандартного устройства ввода или вывода называется переназначением (или переадресацией — redirection) ввода или вывода. Для переназначения ввода используется символ <, а для переназначения вывода >.

redirect<sample.dat

redirect<sample.dat>sample.bak

redirect>sample.bak

Конвейерной пересылкой называется непосредственное соединение стандартного вывода одной программы со стандартным вводом другой программы.

Process1 | process2

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

Изменение буфера потока.

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

Исключение составляют открытые потоки stderr и stdaux, которые по умолчанию не буферизируются, кроме случаев, когда они используются с группой функций printf() или scanf() — тогда им назначается временный буфер.

Можно задать буферизацию потоков stderr и stdaux при помощи функций setbuf() или setvbuf().

Потоки stdin, stdout и stdprn очищаются автоматически при их заполнении.

При помощи двух функций setbuf() и setvbuf() можно сделать буферизированный поток небуферизированным и наоборот.

Буферы, выделяемые системой, недоступны для пользователя, а буферы, которые назначаются при помощи функций setbuf() и setvbuf(), именуются пользователем, и с ними можно работать как с переменными.

Можно назначить буфер любого размера; при использовании функции setbuf() размер определяется константой BUFSIZ.

Закрытие потоков.

Функция fclose() закрывает отдельный файл, а функция fcloseall() закрывает все открытые потоки(желательно закрывать поток по окончанию работы с ним), за исключением stdin, stdout, stderr, stdprn и stdaux. если ваша программа не закрывает поток явно, то он закрывается автоматически по ее завершению. желательно закрывать поток по окончанию работы с ним.

Функция fclose() возвращает значение 0, если файл закрыт успешно, и — 1 в противном случае.

  1. Низкоуровневый ввод и вывод в С. Ввод и вывод символов. Использование функций getc(), putc(), fgetc() и fputc(). Простая программа сжатия файла. Использование функций getchar(), putchar(),fgetchar() и fputchar(). Использование функций getch() и putch().

Низкоуровневый ввод и вывод в с.

функции низкоуровневого ввода и вывода:

Функция

Описание

close()

Закрывает дисковый файл

lseek()

Поиск указанного байта в файле

open()

Открывает дисковый файл

read()

Читает данные в буфер

unlink()

Удаляет файл из подкаталога

write()

Записывает буфер данных

Функции низкоуровневого ввода и вывода не буферизируют и не форматируют данные. они не требуют включения заголовочного файла stdio.h. Объявления низкоуровневых функций дается в заголовочном файле io.h.