【发布时间】:2016-07-13 15:39:07
【问题描述】:
首先,对不起我的英语不好,好的,请转到上面的这个问题。我在许多网站上浏览了很多关于这个问题的参考资料,但我还没有找到正确的答案。
我正在尝试制作一个 C 程序,该程序可以确定用户是否输入整数,如果用户没有输入整数,则程序重试提示用户输入整数等等。当我在条件语句上使用 scanf() 返回值时一切正常,但问题是,当用户输入“空白/空白/空格”(在 ascii 代码上为 )并按“输入”时,我的程序只是保持运行等待用户输入一些字符或整数。
我只是希望如果输入是'whitespace/blackspace/space',程序会重复提示用户输入一个整数或程序停止。
这是案例代码:
#include <stdio.h>
int main() {
int number, isInt;
printf("Input a number : ");
do {
if ((isInt = scanf("%d", &number)) == 0) {
printf("retry : ");
scanf("%*s");
} else if (number < 0) {
printf("retry : ");
}
} while (isInt == 0 || number < 0);
printf("%d\n", number);
return 0;
}
我是 C 的新手,对此感到好奇。我知道如果我使用 %[^\n]
请帮我打破我的好奇心,问候:D
【问题讨论】:
-
scanf() 不会像stackoverflow.com/questions/6582322/… 上的答案那样处理这个问题。试试stackoverflow.com/questions/3765023/…
-
通过
scanf("%c", &character)逐一读取字符并自己将读取的字符串转换为整数是一种解决方案。如果不需要使用scanf(),getchar()应该更适合这种用法。
标签: c whitespace space