Jul*_*val 4 c scanf while-loop c89
我正在尝试为编程分配格式化以空格分隔的用户输入.
本质上,输入由任意数量的表达式组成
L integer integer integer integer
和C integer integer integer
.
例如:L 1 1 5 7 C 4 5 3
.
到目前为止,我已经设法根据初始字符提取整数,并可以使用scanf函数迭代字符串:
char a;
while(scanf("%c", &a) == 1){
if(a == 'C'){
int inputX, inputY, inputR;
scanf("%d %d %d", &inputX, &inputY, &inputR);
printf("%d %d %d\n", inputX, inputY, inputR);
}
else if(a == 'L'){
int x1, y1, x2, y2;
scanf("%d %d %d %d", &x1, &y1, &x2, &y2);
printf("%d %d %d %d\n", x1, y1, x2, y2);
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,虽然这会输出所需的整数,但循环(和用户输入提示)不会终止.
有人可以告诉我为什么会这样吗?
hac*_*cks 14
这是因为\n
永远scanf("%c", &a) == 1
都是真的.
改变你的
while(scanf("%c", &a) == 1)
Run Code Online (Sandbox Code Playgroud)
至
while(scanf(" %c", &a) == 1)
// ^space before format specifier.
Run Code Online (Sandbox Code Playgroud)
之前的空间%c
会吃了这个\n
留下的scanf
(上按Enter).