在我的程序中我想处理数字。如果用户输入的不是数字,我想让程序循环。也就是说,如果输入了“f”,“12 f”,“120941 s”,“123 a13”,它应该显示错误并要求你重新输入。我设置了一个条件,因为它也很重要。但我还需要得到另一个没有条件的数字,只要它不是一个符号。
我放了一个循环,但是如果输入第一个字符,它会给予一个错误,但是如果我输入“22 ff”,它会在一个变量中写22给我,在下一个变量中写ff(我需要得到几个带数字的变量),并创建一个错误。
我该怎么做呢?我最好把它作为一个字符串来检查吗?循环对我来说也很重要,因为我想继续工作,而不是结束程序。我会很乐意接受每一个建议!谢谢!
do {
bool valid;
printf("Enter number x(float) ");
while(!scanf(" %f", &x)) {
printf("x must be number!\nPlease, enter number! ");
fflush(stdin); }
if (x < 0) printf("\nThe number a must be positive. Try again\n");
else valid = 0
} while (valid)
1条答案
按热度按时间8yparm6h1#
这里有一个函数,它会在一定范围内验证输入,并且没有尾随垃圾。它使用
fgets
,很容易就可以转储一个坏的输入并重复。程序会话:
请注意,我使用的是
double
,而不是float
。如果没有明确的理由说明为什么不能使用double
,请不要使用float
,double
是C中的自然浮点类型。