我遇到的问题是我想禁止用户在我的程序中放置字符而不是数字,并可选择打印消息“它已禁用”。它应该询问相同变量的值。我试图用这个来做到这一点:
scanf(" %[0-9]d",&x);
还有这个:
else
result = scanf("%*s");
但它仍然不起作用。我应该寻找什么?我搜索了互联网,但我只找到了使用 C++ 的解决方案,cin
不幸的是它在 C 中根本不起作用。
你可以尝试这样的事情:
char c[SIZE];
int i;
// While the string is not a number
while(fgets(c, SIZE , stdin) && !isAllDigit(c));
其中 isAllDigit 是:
int isAllDigit(char *c){
int i;
for(i = 0; c[i] != '\0' && c[i] != '\n'; i++) // Verify if each char is a digit
if(!isdigit(c[i])) // if it this char is not a digit
return 0; // return "false"
return 1; // This means that the string is a number
}
scanf 不再使用太多,因为它完全不适合键盘输入。这些天的基本方案是循环执行 fgets() + validate + sscanf() 。