端末から実行し、「error.log」などのファイルからいくつかの行を入力として受け入れるプログラムをCで作成しようとしています。どうやってやるの?
コマンド例: ./prog < error.log
端末から実行し、「error.log」などのファイルからいくつかの行を入力として受け入れるプログラムをCで作成しようとしています。どうやってやるの?
コマンド例: ./prog < error.log
入力リダイレクトにシェル構文を使用している場合 (つまり、< filename
特別なことをする必要はありません)。stdin から読み取るだけです (たとえば、 orの代わりにプレーンgets
or )。scanf
fgets
fscanf
ファイルの名前を引数として取りたい場合は、コメント作成者が示したargv
ように、関数に渡された配列main()
で index から始まるそれらの引数を見つけることができます1
。
これは開始する例です。
#include <stdio.h>
#define BLOCK_SIZE 256
int main(int argc, char** argv)
{
char buf[BLOCK_SIZE];
size_t bytes;
while(!feof(stdin)) {
bytes = fread(buf, 1, BLOCK_SIZE, stdin);
fwrite(buf, 1, bytes, stdout);
}
return 0;
}
指定したファイルを出力するだけです./prog < filetoprint.txt