• ベストアンサー

fgets

c言語初心者です。 char s[20]; fgets(s,20,stdin); printf("%s",s); のようなプログラムで、 20以上の入力をしたらエラーしますよね? それをもし入力したとしてもエラーしないで、20文字出力させるようにしたいのですが何か方法はありますか? いろんなサイトを見たり本を読んでもわかりません。 ちなみにlinuxで使いたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.1

fgets()ならエラーは出ません。 ちゃんと19文字(※)だけ取った上でそれを出力します。 ※20文字目は終端文字'\0'が入るため、入力できるのは19文字

armpoint
質問者

お礼

ありがとうございます。 もっと複雑なプログラムで 問題点は他にありました。 申し訳ないです。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • hidebun
  • ベストアンサー率50% (92/181)
回答No.2

エラーするって言い回しはしないので、 エラーになる・ならないで回答します。 このプログラムは、エラーにならないのでは? プログラムを書いて、実行してみましたか? 20文字以上入力したとしても、19文字目までの入力と'\0'が 配列に格納され、最後のprintf文で19文字表示されるのではないでしょうか?

armpoint
質問者

お礼

ありがとうございます。 しっかりと理解できていない点がありましたので 整理できました。

すると、全ての回答が全文表示されます。

関連するQ&A