• 締切済み

非整数を入力したらエラーを表示させたいのですが・・・

入力値をnに格納し非整数を検出したときにエラー表示させたいのですが、処理に困っています。 if( (double)n || (char)n) printf("error\n"); だともちろん整数のときも無理になってしまいますし・・・。 小数点を検出したときはどのようにしたらよいのでしょうか?

みんなの回答

  • tig33
  • ベストアンサー率50% (6/12)
回答No.3

データの入力は、文字列になります。 まず入力バッファを用意しなければなりません。 #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 におきかえてあります。 蛇足ながら、整数の桁数に対する注意が必要です。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

お手軽には strtol.

  • alphion
  • ベストアンサー率19% (27/136)
回答No.1

たとえば、こんな感じでいかがでしょう? char n[256];//'n'って文字列ですよね? char workBuff[256]; int val; scanf("%s",n); val=atoi(n); sprintf(workBuff,"%d",val); if(strcmp(workBuff,n)==0) { //成功 }

chan-fu
質問者

補足

書き忘れていました; プログラムの意図としては整数値を入力して処理をしていくのですが、小数点が入った場合や文字列が入った場合にエラー表示させなければならないんです・・。

関連するQ&A