#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;
}
Run Code Online (Sandbox Code Playgroud)
输出:
3(Input)
3
C 1 4(Input)
0 -374066224C 1 4
Run Code Online (Sandbox Code Playgroud)
上面的代码有什么问题?它没有给出预期的输出.
还有从初始输入流中的换行字符scanf()(和随后的scanf()词):这将被分配到option和后续的int作为分配将失败C 不是int,意义l和m是未初始化的int变量.
要跳过它,请scanf()在for循环内的格式说明符中添加前导空格字符:
scanf(" %c %d %d",&option,&l,&m);
/* ^ */
Run Code Online (Sandbox Code Playgroud)
返回值scanf()是成功分配的次数:检查它以确保进行3分配.
if (3 == scanf(" %c %d %d",&option,&l,&m))
{
/* Valid input. */
}
Run Code Online (Sandbox Code Playgroud)