質問

でも可能ということですか?

コードはscanfのラインをたくさん持っていると言うことができます。代わりに、手動で実行し、デバッグ手で値を追加する、scanf関数は読み取りを開始するとき、それは、端末と相互作用する必要なく、入力されたデータを読み取るするようにデータを標準入力を「供給」することが可能である。

役に立ちましたか?

解決

ファイルにテストラインを入れ、そしてこのようなプログラムを実行します:

myprogram < mytestlines.txt

何とか自体ことを行うには、あなたのプログラムをハッキングよりも優れています。

あなたは、コードをデバッグしているときに

、あなたがそのコマンドラインでそれを実行するためにデバッガを設定することができます。

他のヒント

あなたのプログラムもう少し汎用性にするために、あなたはそれがすでにだけIOを慰めるためとは対照的に、ファイルIOを扱うことができるようになどfscanffprintfを使用するようにプログラムを書き換え検討する必要があります。あなたは標準入力から読み取りまたは標準出力に書き込みたいときに、あなただけの線に沿って何かをするでしょう。

FILE *infile, *outfile;

if (use_console) {
    infile = stdin;
    outfile = stdout;
} else {
    infile = fopen("intest.txt", "r");
    outfile = fopen("output.txt", "w");
}
fscanf(infile, "%d", &x);
fprintf(outfile, "2*x is %d", 2*x);

どのように頻繁にプログラムがファイルのみを許可する標準入力/標準出力を処理していないため?特に、あなたはシェルスクリプトでプログラムを使用して終了すれば、それは、コマンドライン上の入力と出力を指定するために、より明示的なことができます。

int fd[2];
pipe(fd);
close(0); // 0:stdin
dup(fd[0], 0); // make read pipe be stdin
close(fd[0]);
fd[0] = 0;

write(fd[1], "some text", 9); // write "some text" to stdin
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top