web-dev-qa-db-ja.com

Cでファイル入力にリダイレクトを使用する方法

端末からファイルを取得する必要があります。コマンドは次のようになります。

./a.out < fileName.txt

プログラムからfgets()を使用して、ターミナルから要求されたファイルを使用する方法がわかりません。

14
Dexter

リダイレクトを使用すると、入力ファイルの内容がstdinに送信されるため、コード内でstdinから読み取る必要があるため、次のようになります(明確にするためにエラーチェックは省略されています)。

#include <stdio.h>

#define BUFFERSIZE 100

int main (int argc, char *argv[])
{
    char buffer[BUFFERSIZE];
    fgets(buffer, BUFFERSIZE , stdin);
    printf("Read: %s", buffer);
    return 0;
}
15
Nigel Harper

1.)stdinを閉じて、それに別のファイルハンドラーを割り当てます。2。)stupを、dup2関数を使用して他のファイルハンドラーに置き換えます。

1
Pratik

fgetsは使用せず、getsを使用します

リダイレクトとは、端末の入力がファイルの内容であることを意味します。しかし、それはOSによって行われるため、プログラムはそれがどこから来たかを知りません。

0
SJuan76