• 締切
  • すぐに回答を!

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

  • 質問No.549144
  • 閲覧数187
  • ありがとう数1
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 5% (22/371)

こんにちわ,
今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規格です。
よろしくお願いします。

回答 (全2件)

  • 回答No.2

ベストアンサー率 35% (842/2394)

#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 ) );
}
でいかがでしょうか。
  • 回答No.1

ベストアンサー率 24% (357/1463)

start1へ飛ぶ前に残りを全部読んでしまったら?
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,600万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ