LoginSignup
1
2

More than 5 years have passed since last update.

C > 数値を入力 > fgets() / sscanf()

Last updated at Posted at 2015-11-08

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
1
2
6

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2