こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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

こんにちわ,
今Cの勉強をしているんですが,入力をして,何も入力しないもしくは20字以上だと再入力させるのプログラムを作りたいんですけどどうしたらよろしいでしょうか。
charsk[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規格です。
よろしくお願いします。

投稿日時 - 2003-05-16 13:02:45

QNo.549144

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.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 ) );
}
でいかがでしょうか。

投稿日時 - 2003-05-16 13:34:02

ANo.1

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

投稿日時 - 2003-05-16 13:05:07

あなたにオススメの質問