![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
こんにちわ,
今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も見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プログラムの実行時に'<'でリダ...
-
漢字のソートについて
-
C言語について
-
scanf が無視されます
-
プログラミング初心者です。 Py...
-
IF文で戻ることはできますか?...
-
scanfが2回使えない・・・?;
-
Excelセルに入力された文字の色...
-
特定の文字が入力されるまで・・・
-
getchar()について 教えてくだ...
-
入力されたとき,何も入力しな...
-
プログラミングの問題で、キー...
-
*をユーザーが入力した数字の数...
-
コマンドプロンプトからのEOFの...
-
8086のアセンブリで文字列の入...
-
正負を反転させて出力するプロ...
-
Userformの入力順序をタブオー...
-
C言語 逆ピラミッドの作り方
-
scanf()で、エラー対応
-
WindowsでEOF
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
*をユーザーが入力した数字の数...
-
正負を反転させて出力するプロ...
-
数字以外が入力されたらエラー...
-
プログラミング初心者です。 Py...
-
java初心者です。入力されたの...
-
プログラミングの問題です 「金...
-
Eclipseコンソール表示を、リセ...
-
C言語 逆ピラミッドの作り方
-
"scanf"でエンターで改行させな...
-
scanf が無視されます
-
if文の条件にscanf関数を使うと…?
-
C言語について
-
C言語scanf_sで何故か2回入力に...
-
Excel VBAで、Application.Inpu...
-
小数か整数かを判定する方法
-
cout関数を使っているのですが...
-
double型が正常に認識されてい...
-
scanfが2回使えない・・・?;
-
C言語でgetchar();が上手く使え...
-
WindowsでEOF
おすすめ情報