我试图提示用户输入两个非负值。如果用户输入负值,程序会要求用户重新输入非负值。这是我的C程序到目前为止的样子,请解释我是否误用了运算符。
int main()
{
int a,b;
do {
printf("enter two positive integers\n");
scanf("%d""%d", &a, &b);
} while (a<0 || b<0);
printf("thank you");
return 0;
}
答案 0 :(得分:2)
即使有些人认为
scanf("%d""%d", &a, &b);
错误,应更改为:
scanf("%d %d", &a, &b);
不是。 C中常规。相邻字符串文字会自动连接。
然而,没有必要使用那么多"
符号作为特殊用途。
答案 1 :(得分:2)
您必须检查scanf()
的返回值。除非它返回2
,否则您无法依赖a
和b
都具有有效值。
检查scanf()
的返回值可以直接完成,例如你可以:
if(scanf("%d %d", &a, &b) == 2)
{
if(a >=0 && b >= 0)
break;
}
但是,也就是说,通过两步来做这件事往往更好:
fgets()
。sscanf()
扫描该单行中的两个数字。请注意函数名称开头的附加s
,此处为!上面的内容使其更加健壮,因为scanf()
对空格的处理相当复杂。
答案 2 :(得分:1)
除非你的scanf中有一个额外的\“它看起来很好。它应该是:
scanf("%d %d", &a, &b);