- 締切済み
fgets関数を使用したときの文字あふれについて
fgets関数を用いて文字列を入力し、その長さを測るプログラムを作っています。 #include <stdio.h> #include <string.h> #define MAX 256 int main ( int, char *[] ); int main ( argc, argv ) int argc; char *argv[]; { char buf[( MAX )]; while ( 1 ){ memset ( buf, 0, sizeof( buf )); fgets ( buf, MAX, stdin ); if( fgets == NULL ){ break; } printf("入力した文字列の長さは%dです\n" ,strlen( buf )); } return 0; } このプログラムでは、256までしか文字列の長さを測ることができません。 もしこのプログラムで256を超える文字列を入力してしまうと、文字のあふれが発生し、 「入力した文字列の長さは256です」 「入力した文字列の長さは(あふれた文字列の長さ)です」 とこのようになってしまいます。 このプログラムで256以上の文字を読み捨てて、 「入力した文字列の長さは(あふれた文字列の長さ)です」 を表示しないようにできるのでしょうか? また読み捨てた文字列の長さを知ることはできるのでしょうか? もしかしたらfgets関数を使用すると不可能なのではないか?と思っています。 分かる方が居ましたらどうか教えて下さい。 よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- wormhole
- ベストアンサー率28% (1626/5665)
回答No.5
- Yune-Kichi
- ベストアンサー率74% (465/626)
回答No.4
- Wr5
- ベストアンサー率53% (2173/4061)
回答No.3
- kmee
- ベストアンサー率55% (1857/3366)
回答No.2
- honor
- ベストアンサー率35% (25/71)
回答No.1