• 締切済み

文字列の読み込み

0文字~6文字の文字列をgets()で読み込んだとき、文字数が6文字以上になった場合エラー表示を出すようにするにはどのようにしたらよいでしょうか? 自分で調べてみてfgets()を使えばなんとかなりそうなんですが、gets()を用いるという制約があるためできません。 どなたかよろしくお願いします。

みんなの回答

  • ttyp03
  • ベストアンサー率28% (277/960)
回答No.3

gets でも fgets でもやることは変わりません。 例え fgets で文字数を制限して読みこませても、更に次の文字が存在するか読み込まないといけないので、#2さんの言うように多めにバッファを確保し1行全部を取得してから strlen で文字列長を調べるのがいいでしょう。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

getsで読み込んだ時に、文字数を調べるというのだから getsで読み込むバッファのサイズを大きめに取っておくしかありません。 読み込んでから文字数がバッファの文字数を超えていたからgetsを使うことができないというような意味なら、おかしなことですので。 だから、単純に strlenを使えばいいと思います。 #include <string.h> char buff[64]; gets(buff); if(strlen(buff)>=6){ fprintf(stderr, "error:入力された文字数が6文字以上です\n"); }

  • xcrOSgS2wY
  • ベストアンサー率50% (1006/1985)
回答No.1

その課題には、使ってよい関数の一覧はありませんか?