【发布时间】:2020-02-18 01:02:00
【问题描述】:
当程序要求输入数字时,我正在尝试通过按 Enter 键来找出退出程序的方法。
我在main() 中尝试了这个if 语句,但它似乎不起作用。
int main()
{
while(1){
int val;
printf("\nnumber to convert:\n ");
scanf("%i", &val);
ibits(val);
if (val = '\n')
{
break;
}
}
return 0;
}
【问题讨论】:
-
至少,您应该将
if语句中的=更改为==。 -
总是检查来自
scanf()的返回值。在这种情况下,它可能返回零,这意味着没有实际读取和转换任何字段。 -
而 AFAIK,
scanf("%i", &val)只会在您的输入是数字字符串时正确扫描(即,它不会将字符\n扫描到val)。 -
请注意,
scanf()中的“f”最初表示“格式化”,因为scanf()是为扫描格式化数据而开发的,因此它几乎没有能力处理任何不符合预期格式的内容,或允许您从意外输入中恢复。如果scanf()用于格式化数据,请务必记住用户输入的输入根本没有格式化...... -
将
getchar();放在程序的末尾。