Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование / WORD / Лекции по ЯП (часть 3).doc
Скачиваний:
138
Добавлен:
15.04.2015
Размер:
1.34 Mб
Скачать

Функции потокового ввода-вывода

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

Стандартные функции потокового ввода-вывода

Функции, использующие стандартные потоки

Функции, требующие указания имени потока

Назначение

printf()

fprintf()

Форматированный вывод

vprintf()

vfprintf()

Форматированный вывод с переменным списком аргументов

puts()

fputs()

Вывод строк

putchar()

putc(), fputc()

Вывод символов

scanf()

fscanf()

Форматированный ввод

vscanf()

vfscanf()

Форматированный ввод с переменным списком аргументов

gets()

fgets()

Ввод строк

getchar()

getc(),fgetc()

Ввод символов

perror()

Вывод строк в stderr

Все эти функции требуют включения в программу заголовочного файла stdio.h. Для функции perror() может понадобиться также файл stdlib.h. Функции vprintf() и vfprintf() требуют еще и включения файла stdargs.h.

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

Функции ввода подразделяются на три иерархических уровня:

  • ввод отдельных символов;

  • ввод строк;

  • форматированный ввод.

Ввод символов

Функции ввода символов считывают данные из потока ввода по одному символу за раз, При вызове одной из таких функций она возвращает следующий символ из потока или EOF, если достигнут конец файла или случилась какая-либо ошибка. Символическая константа EOF определена в файле stdio.h и равна -1. Функции ввода символов по-разному выполняют буферизацию и дублирование вводимых символов.

Буферизация означает, что операционная система хранит символы во временном буфере памяти, пока пользователь не нажмет клавишу <Enter>, и только после этого символы попадают в поток ввода stdin. Функции, которые работают без буферизации, выводят символ в stdin немедленно после нажатия соответствующей клавиши.

При дублировании функции ввода копируя введенный символ в потов stdout, т.е. символ появляется на экране.

Функция getchar()

Функция getchar () получает следующий по очередности символ из потока stdin. Она буферизует ввод и дублирует символ на экране. Ее прототип имеет следующий вид:

int getchar(void);

Функция getch()

Функция getch() получает следующий символ из потока stdin. Она вводит символы без буферизации и без дублирования на экране.

Функция getch() не определена в стандам ANSI. Обычно прототип функции getch ()находится в заголовочном фам conio.h и имеет следующий вид:

int getch(void);

Ввод строк

Функции ввода строк считывают из потоков целые строки, т.е. последовательности символов до первого встретившегося символа конца строки. В стандартной библиотеке С имеется функция gets().

Ее прототип выглядит следующим образом:

char *gets(char *str);

Функция gets () принимает в качестве аргумента указатель на строку и возвращает указатель того же типа. Функция считывает символы из потока ввода до тех пор, пока не встретится конец строки (\n). Символ конца строки автоматически заменяется нулевым символом, и вся строка помещается по адресу, указанному аргументом str.