Функция scanfQ

Результат работы

Пример

Функции ввода-вывода высокого уровня

Программа


Рис. 1.13. Схема передачи информации функций ввода-вывода верхнего уровня

Поток — это абстрактное понятие, относящееся к любому переносу данных от источника данных к получателю данных. Ввод информации от источника называется приемом данных. Вывод информации на приемник называется втавкой или помещением данных.


Потоков в языке Си пять. Когда программа будет начинать выполняться, автоматически открываются следующие потоки:

• стандартный ввод (stdin);

• стандартный вывод (stdout);

• вывод для сообщений об ошибках (stderr);

• стандартное устройство печати (stdprn);

• стандартный последовательный порт (stdaux).

Функции ввода-вывода для консольного терминала и портаиспользуют специфические особенности ПК — наличие видеоадаптера.

Для функций ввода-вывода нижнего уровняхарактерно следующее:

1) используются средства ввода-вывода операционной системы;

2) форматирование данных не осуществляется;

3) отсутствует буферизации данных.

В языке Си ввод и вывод информации возложен на функции ввода-вывода. Прототипы функций ввода-вывода высокого уровня содержатся в файле stdio.h.

До сих пор мы использовали только две функции из стандартной библиотеки функций ввода-вывода:

1) функцию print/— функцию форматированного вывода;

2) функцию scan/— функцию форматированного ввода.

Функция print/

 

#include <stdio.h>      
int printf(format string [, argument. .] ) ;
char ^format string;      

Функция возвращает число напечатанных символов. Информация выводится в стандартный поток stdout.

 

printf ("\n %s %s %s\n", "Я", "учусь", "в ЮУрГУ");
char *а="Я учусь в ЮУрГУ";    
printf(a);    

Пример

#include <stdio.h>

main ()

{

char namel[40], name2[ll]; int count;

printf("Введите два имени\п"); count = scant("%s%4s",namel,name2); printf ("\n Введено %d имени %s и %s \n", count, namel, name2); }

 

Введите два имени    
Саша <Enter>    
Александр <Enter>    
Введено имени Саша и Алек

 

#include <stdio.h>      
int scant(format string [, argument. .] ) ;
char ^format string;      

Функции scanf работает со строками через формат %s. Данные читаются из стандартного потока stdin; чтение строки символов производится до тех пор, пока не встретится пустой символ «», т. е. с помощью scanf нельзя ввести строку с пробелом. С помощью функции scanf можно читать указанное число символов (например %\Qs — мы вводим 10 символов). Функция возвращает целое число, равное количеству введеных символов, если ввод прошел успешно. Функция возвращает значение EOF (end of file), если была попытка прочитать конец файла.

Продолжаем рассматривать функции ввода и вывода из стандартной библиотеки Си.

Рассмотрим функции, позволяющие осуществлять текстовый ввод и вывод. Текстовый ввод-вывод имеет дело с потоком литер или с текстовым потоком.

Текстовый поток — это последовательность литер, разбитая на строки, каждая из которых состоит из нуля или более литер (или не содержит символов) и завершается литерой «новая строка». Поэтому для работы с текстовым потоком достаточно иметь лишь функции ввода или вывода одной литеры. В библиотеке stdio.h эти функции носят имена getchar иputchar.


Функция getchar читает символ из входного потока stdin.

int getchar();

За одно обращение к функции getchar читается одна литера ввода из текстового потока, код которой и выдается в качестве результата.