0

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

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

如果我输入一个数字,它会工作并继续程序,但如果我输入一个字符,它只会要求我再次输入。虽然,如果我输入一个正确的整数,它不会打破循环。

4

1 回答 1

1

当您不先输入号码时,它会将非数字字符留在输入流中,以供下一个呼叫接听。所以你进入了一个无限循环。

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

do {
    char line[512];
    fgets(line,512,stdin);
    srs = sscanf(line,"%d", &x);
} while (!srs);
于 2012-08-21T16:12:31.837 回答