Как прочитать файл, переданный через стандартный ввод в C - PullRequest
0 голосов
/ 13 марта 2019

Я хочу передать текстовый файл на C-программу, подобную этой ./program < text.txt. Я обнаружил на SO, что аргументы, передаваемые таким образом, появляются не в argv[], а в stdin. Как я могу открыть файл в stdin и прочитать его?

1 Ответ

2 голосов
/ 13 марта 2019

Вы можете напрямую читать данные без необходимости открывать файл.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).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...