Cのコードでscanf()を使って数値のみを入力する、という方法の整理。
参考 http://f4.aaacafe.ne.jp/~pointc/log460.html
参考 http://www9.plala.or.jp/sgwr-t/lib/sscanf.html
戻り値
0にもなり得ます。例えばstrに"A"を、書式指定に"%d"を指定した場合などは入力が行われず0が返却されます。
戻り値が 0より大きい時に数値と判断してみる。
#include <stdio.h>
int inputNumericValue() {
int val;
char buf[512];
printf("[数値を入力してください]\n");
fgets(buf, sizeof(buf), stdin);
if (sscanf(buf, "%d", &val) > 0) {
printf(">> %d\n", val);
} else {
printf(">> ERROR:数値ではありません。\n");
}
}
int main(void) {
inputNumericValue();
inputNumericValue();
inputNumericValue();
return 0;
}
stdin
A
3
1
4
結果
[数値を入力してください]
>> ERROR:数値ではありません。
[数値を入力してください]
>> 3
[数値を入力してください]
>> 1