端末からファイルを取得する必要があります。コマンドは次のようになります。
./a.out < fileName.txt
プログラムからfgets()を使用して、ターミナルから要求されたファイルを使用する方法がわかりません。
リダイレクトを使用すると、入力ファイルの内容が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;
}
1.)stdinを閉じて、それに別のファイルハンドラーを割り当てます。2。)stupを、dup2関数を使用して他のファイルハンドラーに置き換えます。
fgets
は使用せず、gets
を使用します
リダイレクトとは、端末の入力がファイルの内容であることを意味します。しかし、それはOSによって行われるため、プログラムはそれがどこから来たかを知りません。