Вы можете напрямую читать данные без необходимости открывать файл.stdin
уже открыто.Без специальных проверок ваша программа не будет знать, является ли это файлом или вводом из терминала или из канала.
Вы можете получить доступ к stdin
по его файловому дескриптору 0
, используя read
или использовать функции из stdio.h
.Если функция требует FILE *
, вы можете использовать глобальный stdin
.
Пример:
#include <stdio.h>
#define BUFFERSIZE (100) /* choose whatever size is necessary */
/* This code snippet should be in a function */
char buffer[BUFFERSIZE];
if( fgets(buffer, sizeof(buffer), stdin) != NULL )
{
/* check and process data */
}
else
{
/* handle EOF or error */
}
Вы также можете использовать scanf
для чтения ипреобразовать входные данные.Эта функция всегда читает с stdin
(в отличие от fscanf
).