0

ファイルから行を読み取る必要があるプログラムを C で作成しています。現在、その目的で fopen() を使用しています。

これは私のプログラムでうまくいきます。

./myProgram /path/to/file

ただし、次のような入力の読み取りに問題があります。

./myProgram - <<END
This
is
some
nameless
file
END

したがって-、2 つの END の間の内容を持つ名前のないファイルであると推測していますが、その場合、プログラムはファイルが見つからないことに関連するエラーを返します。これは、fopen() が null ポインターを返したことを意味します。

ここで何が起こっているのだろうか?

4

1 に答える 1

0

あなたは正しいです。fopenmanによると、 fopen はconst char*ファイルを開くために a を必要とします。argv を fopen に渡すだけの場合、「これは名前のないファイルです」はファイル パスではないためfopen、ファイルを見つけることができません。

stdin から読み取りたい場合は、またはファイル ストリームを渡すことができる引数fgetsを取るその他の読み取り関数を使用できます。FILE *streamstdin

于 2013-04-30T00:17:43.580 に答える