检查用户是否输入了int - C.

时间:2012-08-21 16:10:03

标签: c loops input while-loop scanf

我需要检查用户是否在scanf()中输入了一个整数(在C中)。我有这段代码:

do {
    srs = scanf("%d", &x);
} while (!srs);

如果我输入一个数字,它会继续使用该程序,但如果我输入一个字符,它只会再次要求我输入。但是,如果我这样输入一个正确的整数,它就不会破坏循环。

1 个答案:

答案 0 :(得分:1)

如果不先输入数字,它会在输入流上留下非数字字符,以便下次接听电话。所以你进入了一个无限循环。

您应该使用fgets来读取整行输入,然后使用sscanf输入行。

do {
    char line[512];
    fgets(line,512,stdin);
    srs = sscanf(line,"%d", &x);
} while (!srs);