如果用户必须插入多个值,然后他们想停止该怎么办?
例如,用户必须插入浮点值,但是如果它们插入字母,则循环停止。我如何创建这样的东西:
for(;;){
scanf("%f", &n);
if(!isdigit(n))
break;
}
答案 0 :(得分:1)
scanf
对于交互式用户输入来说是一个糟糕的选择。尤其是因为如果用户键入了scanf
所不希望的内容,那么该输入将停留在内部输入缓冲区中,并且很可能在程序的后续scanf
中引起麻烦。
我会喜欢这样的东西:
#include <stdio.h>
int main(int argc, char * argv[])
{
float n;
char input[100];
for (;;) {
fgets(input, sizeof(input), stdin);
if (sscanf(input, "%f", &n) != 1)
break;
printf("User input = %f\n", n);
}
printf("Last line entered by user: %s", input);
}
答案 1 :(得分:0)
您可以使用scanf
返回值来中断循环。
示例:
for(;;){
if(scanf("%f", &n) != 1)
break;
}
scanf
如果成功读取浮点数,将返回1。
答案 2 :(得分:0)
尝试使用此代码...我认为它将很好地工作:
#include <stdio.h>
int main() {
float n;
int check = 0;
for( ;; ) {
check = scanf("%f", &n);
if (check != 1) break;
printf("%f\n ", n);
}
return 0;
}
答案 3 :(得分:0)
如果希望在不需要记住值的情况下使用查询类型输入,则可以使用这种非常简单的语法
float n;
while(scanf("%f",&n)){
printf(" %f",n);
}
这将在输入字符时中断。
如果您需要更多预防措施,请使用Jabberwocky的答案。