それも可能ですか?C/C++プログラムからstdinへの入力を追加しますか?
コードには多くのscanf行が含まれています。デバッグ時に手動で値を手動で実行したり追加したりする代わりに、stdinにデータを「フィードする」ことができます。これにより、scanfが読み込みを開始すると、端末と対話する必要なしに入力データを読み込みます。
それも可能ですか?C/C++プログラムからstdinへの入力を追加しますか?
コードには多くのscanf行が含まれています。デバッグ時に手動で値を手動で実行したり追加したりする代わりに、stdinにデータを「フィードする」ことができます。これにより、scanfが読み込みを開始すると、端末と対話する必要なしに入力データを読み込みます。
ファイルにテストラインを入れ、そしてこのようなプログラムを実行します。何とか自分自身これを行うには、あなたのプログラムをハッキングより
myprogram < mytestlines.txt
良いです。
コードをデバッグするときに、そのコマンドラインでデバッガを実行するようにデバッガを設定できます。
あなたのプログラムを多目的にするには、fscanf
,fprintf
などを使用してプログラムを書き直して、コンソールIOだけでなくファイルIOをすでに処理できるようにすることをお勧めします。どのくらいの頻度プログラムがファイルのみを許可する標準入力/標準出力を処理していないので
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
これがOPの質問に関するものであってもいなくても、これは私にとって非常に役に立ちます。ありがとうございます。 – rsethc
これは大きなアドバイスです。高く評価され、私は将来の実装でそれを試みることを確実にするでしょう。ありがとうございました。 – Milan