• 締切済み

入力されたとき,何も入力しない,もしくは20字以上だと再入力のプログラム??

こんにちわ, 今Cの勉強をしているんですが,入力をして,何も入力しないもしくは20字以上だと再入力させるのプログラムを作りたいんですけどどうしたらよろしいでしょうか。 char sk[21]; start1: while(stdin = " puts("入力"); if ((*fgets(sk,sizeof(sk),stdin) < 0x21) || strlen(sk) >= 21 ) {   puts("error");   goto start1; } だと,20字以上のときにstdinのバッファに残ってしまってエラー表示が2度出ます。 ちなみにfflush(stdin)は使用できないANSI C規格です。 よろしくお願いします。

みんなの回答

  • arukamun
  • ベストアンサー率35% (842/2394)
回答No.2

#include <stdio.h> main() {   char sk[21] ;   int i ;   i = -1 ;   puts("入力");   do {     i ++ ;     if ( i > 21 ){       puts("\nerror\n入力");       i = 0 ;     }     sk[i] = getch();     printf("%c",sk[i]);   } while ( sk[i] != 0x0D ); } これだと21文字目を入れた時点でerrorを表示します。 ENTERを押した時点でerrorを表示して再入力させるのであれば、 #include <stdio.h> main() {   char sk[21],c ;   int i ;   i = -1 ;   puts("入力");   do {     i ++ ;     if ( i < 21 ){       c = sk[i] = getch();     } else if ( c == 0x0D ){       puts("\nerror\n入力");       i = 0 ;       c = sk[0] = getch();     } else {       c = getch();     }     printf("%c",c);   } while ( !( c == 0x0D && i < 21 ) ); } でいかがでしょうか。

  • ranx
  • ベストアンサー率24% (357/1463)
回答No.1

start1へ飛ぶ前に残りを全部読んでしまったら?