2016-09-13 10 views
0

したがって、 '<'演算子を使ってコマンドラインからtxtファイルを読み込む必要があります。 scanfを使ってcでtxtファイルを読み取るにはどうすればよいですか?

は、例えば、端末の私の実行可能ファイルは、次のようになります。

\ book1.csvは私のargvある< find.txt
output.csvファイルbook1.csv [1]私は、出力を関数fscanfを使用してデータを挿入する場所。 csvは私のプログラムに従ってファイルを書いています。find.txtはtxtファイルから引数を取ってbook1.csvを探します。

私はコマンドライン引数から読み込む必要があるので、scanfを使用することのみが許可されています。

これは私のコードですが、主な機能の中のtxtファイルを読み込みますが、なんらかの理由で何らかの理由でディレクトリを出力する無限ループに入ります。

char key[66]; 
while((scanf("%[^\n]s ", &key))!= EOF){ 
    printf("%s\n",key); 
} 

このtxtファイルが

ジェームズ・ボンド
ジョーイ
で構成するものであるピーター・

だから、私はprintf文を使って一つ一つから3人の名前を印刷するように期待していますが、私の出力には何らかの種類のディレクトリがあり、無限ループが出力されます。

+0

こんにちはuser3121023 @、それは私が達成しようとしている3つの名前を出力しますが、その前に何らかの種類の奇妙なディレクトリを表示します。どんな考え? – Dave

+0

@ user3121023はい、どうもありがとうございます。エラーは、システム環境設定でフォーマットが異なるため、txtファイルがrtfに更新されていたことです。心から感謝する :-) – Dave

答えて

0

<をコマンドラインで使用すると、プログラムからファイルを読み取るべきではありません。つまり、ファイルストリームはstdin(標準入力ストリーム)に置き換えられ、プログラムはキーボードなどから読み込みます。 scanfである。

問題はscanfの使用である:&なし詳細や%s指定子使用keyためreferencesを読む(キーが既にメモリのアドレスであり、&でアドレスを取得すると、誤ったメモリ使用量につながる)

関連する問題