2011-06-18 5 views
0

ストリームから読み込んでいないので、はるかに柔軟に見えます。 あなたは簡単に読み取りのタイミング/コードの場所を変更することができますので言及すると、あなたはCストリーム(私は間違っている、あなたは文字列を作ることができますFILE *ストリーム)にすることができますか?fgets + sscanfよりscanfまたはfscanfを使用する理由はありますか

さらに、ちょっと奇妙なことが分かりました。scanf。賛否両論はscanfになります。

編集:私はあなたがintegerを期待していたが、あなたはfloating pointまたはいくつかの他の互換性のない型を読めば、あなたはscanfの戻り値を確認することができます関数fgets + sscanfは

答えて

2

これは、C FAQでよく取り上げられています。

なぜ誰もが使用しないと言っていますか? scanf?代わりに私は何を使うべきですか?

あなたが信頼されたファイル(NOT stdin)から読んでいるなら、fgets + sscanf代わりのfscanfを使用しても意味がありません。実際にscanfstdinから読む)を使用することは問題である。

1

のコンボ対scanf関数や関数fscanfを使用することを意味。 0を返した場合、integerは読まれませんでしたが、fgetsではそれを行うことはできません。また、戻り値scanfを確認すると、読み取られた項目の数が表示されます。

+0

あなたはsscanfでもそうすることができます。 –

+0

また、あなたが誤って望むように、他のさまざまなタイプ/ simpeパターンを文字列から読み出そうとすることもできます。私はscanfでそれを行う簡単な方法はないと思います。 –

+0

@Roman A. Taycher: 'fgets'の' scanf'についてでした – lovesh

関連する問題