我目前正试图让while循环工作,但它不是我想要的方式。我想要做的是循环,直到输入一个特定的输入。我的语法肯定有问题,但我无法弄清楚是什么。
#include <stdio.h>
int main()
{
float input = 0;
scanf("%f", &input);
while(input!=0)
{
printf("hello\n");
scanf("%f", &input);
}
return 0;
}
由于某种原因,当它为零时,它不会突破while循环。我希望while循环在有人输入0后停止工作,但是当有人输入0时,它将创建一个无限打印“hello”而不是......正如你可能已经猜到的那样,只要用户输入浮动之外的任何内容,输入就变为0,所以如果我输入一个字母,我希望while循环停止,但它不会; \
编辑:
谢谢你们的帮助!我学会并弄清楚为什么我的逻辑错了(由于缺乏理解如何测试scanf的值)!欢呼声。
答案 0 :(得分:3)
input
不会变为零。 scanf
不会更改该值,也不会消耗任何字符。因此,如果用户输入非浮动,scanf
将一遍又一遍地读取相同的字符。
您可以测试scanf
返回值以查看它是否成功读取任何内容。 scanf
返回已成功读取的字段数,因此返回值为0意味着它无法解析任何内容:
while(scanf("%f", &input) == 1) {
printf("You entered %f\n", input);
}
答案 1 :(得分:0)
像
一样写循环 while(input!=0)
{
printf("hello\n");
input = 0.0;
scanf("%f", &input);
}