- 締切済み
非整数を入力したらエラーを表示させたいのですが・・・
入力値をnに格納し非整数を検出したときにエラー表示させたいのですが、処理に困っています。 if( (double)n || (char)n) printf("error\n"); だともちろん整数のときも無理になってしまいますし・・・。 小数点を検出したときはどのようにしたらよいのでしょうか?
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- tig33
- ベストアンサー率50% (6/12)
データの入力は、文字列になります。 まず入力バッファを用意しなければなりません。 #define BUFMAX (256) char inbuf[BUFMAX]; データをキーボードから入力するものとして、 printf("整数を入力してください。\n"); gets(inbuf); で、入力された文字列をチェックします。 整数と言うことは、文字が'0'~'9'でなければ、いけませんから、 #define FALSE (0) #define TRUE (1) int ok, ct, val; ok = TRUE; val = 0; for(ct=0; (ct<BUFMAX && inbuf[ct]!='\0'); ct++) { if( ('0'<=inbuf[ct]) && (inbuf[ct]<='9') ) { val *= 10; val += inbuf[ct] - '0'; } else { ok = FALSE; break; } } if( ok ) { printf("%sは整数です。 %d\n",inbuf, val); } else { printf("%s"は整数ではありません。\n", inbuf); } こんな具合ですね。 なお、文字('0'~'9')のチェックは、標準関数の isdigit() を使っても良いでしょう。 質問の n は val におきかえてあります。 蛇足ながら、整数の桁数に対する注意が必要です。
補足
書き忘れていました; プログラムの意図としては整数値を入力して処理をしていくのですが、小数点が入った場合や文字列が入った場合にエラー表示させなければならないんです・・。