![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
こんにちわ,
今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で質問しましょう!
似たような質問が見つかりました
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# プログラミングの問題です。至急教えてください。 /***から***/の部分をプログラミングにしてほし 1 2022/10/13 11:48
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# C言語 3 2022/10/04 15:07
- Visual Basic(VBA) 【再々投稿】VBAのプログラムで動作しなくて困っています 8 2022/10/14 09:06
- Java コンソールから所属財産を入力(単位:万円 1000~100000以内でIntegerに変換できない場 2 2022/05/31 21:32
- JavaScript HTMLでJavaScriptを使用してプログラムを作ります。 入力されたパスワードを取得して、パス 2 2022/10/18 01:05
- Visual Basic(VBA) Changeイベントで複数セルへの貼り付けおよび値削除時に1個目のセルのみエラーになる 3 2022/12/21 09:07
このQ&Aを見た人はこんなQ&Aも見ています
-
賃貸で可能な古民家風レトロな部屋作りのコツ!改めて知る畳の高い機能性と魅力も紹介
畳の部屋を雰囲気のよい部屋に仕上げたい!賃貸住宅でもできる古民家風のレトロな部屋作りのコツを伺った。
-
Enterキーを押されたら次の処理に移るという事をしたい。
C言語・C++・C#
-
関数から配列を返すには?
C言語・C++・C#
-
構造体の要素すべてに対する四則演算の方法を教えてください.
C言語・C++・C#
-
-
4
fgetsなどのときのstdinのバッファを消すには?
C言語・C++・C#
-
5
数字以外が入力されたらエラー文を出したい。
C言語・C++・C#
-
6
C言語 数字以外を入力させない方法 教えてください
C言語・C++・C#
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
数字以外が入力されたらエラー...
-
プログラミングの問題です 「金...
-
正負を反転させて出力するプロ...
-
プログラミング初心者です。 Py...
-
*をユーザーが入力した数字の数...
-
C言語でgetchar();が上手く使え...
-
C言語について
-
OpenCV webカメラ同時出力について
-
C言語
-
fflush(stdin)の使い方とprintf...
-
java初心者です。入力されたの...
-
scanfが2回使えない・・・?;
-
getcharをしながらwhile文で出...
-
C言語 入力した値から0までの数...
-
至急教えてください。プログラ...
-
getchar()について 教えてくだ...
-
"scanf"でエンターで改行させな...
-
プログラミングの問題で、キー...
-
C言語 逆ピラミッドの作り方
-
入力エラーの処理について。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
*をユーザーが入力した数字の数...
-
数字以外が入力されたらエラー...
-
正負を反転させて出力するプロ...
-
プログラミング初心者です。 Py...
-
java初心者です。入力されたの...
-
Eclipseコンソール表示を、リセ...
-
scanfが2回使えない・・・?;
-
C言語 逆ピラミッドの作り方
-
double型が正常に認識されてい...
-
ワードで文字を入力する時の変...
-
コマンドプロンプトからのEOFの...
-
Linuxで入力待ちなしkeyread関...
-
scanf が無視されます
-
if文の条件にscanf関数を使うと…?
-
C言語について
-
cout関数を使っているのですが...
-
enterでループ終了
-
"scanf"でエンターで改行させな...
-
C言語でgetchar();が上手く使え...
-
C言語scanf_sで何故か2回入力に...
おすすめ情報