关于scanf中%*的问题:
从键盘输入:10 20 30<回车>输出的结果是?
#include <stdio.h>
main()
{
int i="0", j="0", k="0";
scanf("%d%*d%d", &i, &j, &k);
printf("i=%d, j=%d, k=%d\n", i,j,k);
}
分析: 注意第二个d前面有一个*,%*表示读取输入的内容,但是不记录(不赋值),也就是说,跳过第二个输入内容。
直接将第三个的输入的数赋值给j,所以结果是
i=10, j="30", k="0"
即: %d, 读入第一个输入 10 赋值给 i,
%*d,读入第二个输入 20 但是不赋值,
%d, 读入第三个输入 30 赋值给 j, (i赋值了, 所以接着给j赋值),
此时结束, 虽然k没有赋值, 但是格式化输入已经结束, 所以k的值仍为初值 0.
【2008-03-21】
文章评论(0条评论)
登录后参与讨论