Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Антонюк и др.doc
Скачиваний:
49
Добавлен:
07.11.2018
Размер:
32.99 Mб
Скачать

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

Функции низкоуровневого ввода-вывода не выполняю никакой буферизации и форматирования. Они непосредственно обращаются к средствам ввода/вывода операционной системы.

При открытии файла на этом уровне возвращается описатель файла (file handle), представляющий собой целое число, используемое затем для обращения к этому файлу при дальнейших операциях. Для открытия используется функция open(), для закрытия – функция close().

Функция read() читает данные в указанный массив, а write() – выводит данные из массива в файл, lseek() – используется для перемещения по файлу.

Низкоуровневые функции не требуют включения заголовочного файла stdio.h, вместо него используется файл io.h.

Низкоуровневая система ввода-вывода не вошла в стандарт ANSI C, поэтому ее не рекомендуют для дальнейшего использования.

Ввод и вывод символов, строк, слов.

Наиболее общими функциями являются те, которые работают с отдельными символами. Функция getc() вводит один символ из указанного файлового потока в переменную типа int:

int ic;

ic=getc(stdin);

Вводится один символ из потока stdin.

Функция putc() передает один символ в указанный файловый поток:

putc(ic,stdout);

Для стандартных потоков stdin и stdout можно использовать функции getchar() и putchar() соответственно:

int ic;

ic=getchar();

putchar(ic);

Функции getch() и putch() являются низкоуровневыми функциями. Обычно функция getch() используется для перехвата символа, введенного с клавиатуры сразу после его нажатия. Нажатия клавиши “Enter” не требуется.

Для ввода/вывода текстовых строк можно использовать функции gets(), fgets(), puts(), fputs(). Функция fgets() имеет вид:

fgets(имя_массива, размер_массива, указатель_на_поток);

Она считывает символы в указанный массив и добавляет в конце null-символ. Считывание производится до заполнения массива, или до достижения конца файла. Символ перевода строки переписывается в массив.

Для ввода и вывода целых чисел можно использовать функции getw() и putw(). Они работают с двоичными файлами.

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

Богатый ассортимент средств управления форматом позволяет легко создавать таблицы, графики или отчеты. Функциями, выполняющими этот вывод, являются printf() - для стандартного потока вывода stdout, и fprintf() – для любого потока. Функция fprintf() имеет вид:

fprintf(поток_вывода, “формат”, перем_1, перем_2,…);

Работает она аналогично printf() и выводит данные в указанный поток вывода.

Для форматированного ввода используются функции scanf() и fscanf().

Для преобразования текстовой строки можно использовать sscanf(). Она работает аналогично fscanf(), но данные берет из сроки, а не из файла.

Потоки cin, cout, cerr.

В языке С++ имеется другая библиотека ввода/вывода, определяемая заголовочным файлом iostream.h. Ввод/вывод в ней определяется набором специальных классов. Аналогами потоков stdin, stdout и stderr являются cin, cout и cerr. Они открываются автоматически при запуске программы.

Операции выделения >> и вставки <<.

Для ввода/вывода с помощью указанных потоков используются специальным образом определенные операции “занести в поток” и “получить из потока”, << и <<. Операция >> выделяет данные из входного потока и помещает в указанные переменные, а операция << помещает значения указанных переменных в поток.

Приведем пример использования потока stdin и потока cin:

scanf(“%d%lf%c”,&ivalue,&dvalue,&cvalue);

cin>>ivalue>>dvalue>>cvalue;

Аналогично для вывода:

printf(“Integer:%d double: %lf”,ivalue,dvalue);

cout<<”Integer:”<<ivalue<<” double:”<<dvalue;