#include <stdio.h>
int main(){
int l,m,q,j;
char option;
scanf("%d",&q);
printf("%d\n",q);
for(j=0;j<q;j++){
scanf("%c %d %d",&option,&l,&m);
printf("%c %d %d",option,l,m);
}
return 0;
}
输出:
3(Input)
3
C 1 4(Input)
0 -374066224C 1 4
上面的代码有什么问题吗?它没有给出预期的输出。
最佳答案
初始 scanf()
(以及后续 scanf()
)的输入流中仍然有一个换行符:这将被分配给 option
和后续的 int
赋值将失败,因为 C
不是 int
,这意味着 l
和m
是未初始化的 int
变量。
要跳过它,请在 for
循环内的 scanf()
格式说明符中添加前导空格字符:
scanf(" %c %d %d",&option,&l,&m);
/* ^ */
scanf()
的返回值是成功分配的次数:检查它以确保进行 3
次分配。
if (3 == scanf(" %c %d %d",&option,&l,&m))
{
/* Valid input. */
}
关于c - 以下 C 代码输出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11902467/