
こんにちわ,
今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規格です。
よろしくお願いします。
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 ) );
}
でいかがでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
数字以外が入力されたらエラー...
-
EDITコントロールで入力できる...
-
入力候補を表示させるには・・・?
-
getchar()について 教えてくだ...
-
Eclipseコンソール表示を、リセ...
-
java初心者です。入力されたの...
-
cout関数を使っているのですが...
-
C言語 atoi関数
-
プログラミング初心者です。 Py...
-
C言語
-
if文の条件にscanf関数を使うと…?
-
*をユーザーが入力した数字の数...
-
C言語 While文(ループ)内の...
-
C言語 逆ピラミッドの作り方
-
C++:cinが上手く使えない
-
C言語でのカレンダー作成
-
入力値が1以下、かつ数字以外の...
-
最早開始時間と最遅完了時刻を...
-
Aの値からBの値を除するとは??
-
信頼区間の1.96や1.65ってどこ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
数字以外が入力されたらエラー...
-
正負を反転させて出力するプロ...
-
プログラミング初心者です。 Py...
-
*をユーザーが入力した数字の数...
-
java初心者です。入力されたの...
-
コマンドプロンプトからのEOFの...
-
4桁の数字以外を入力したらエラ...
-
Eclipseコンソール表示を、リセ...
-
Excel VBAで、Application.Inpu...
-
"scanf"でエンターで改行させな...
-
cout関数を使っているのですが...
-
プログラミングの問題です 「金...
-
scanf関数について
-
Userformの入力順序をタブオー...
-
C言語でgetchar();が上手く使え...
-
プログラムの実行時に'<'でリダ...
-
C言語初心者です。ファイルの読...
-
scanf が無視されます
-
実行結果の順番がおかしいんで...
-
C言語scanf_sで何故か2回入力に...
おすすめ情報