新闻  |   论坛  |   博客  |   在线研讨会
关于scanf中%*的问题:
mayer | 2009-07-12 13:31:05    阅读:1885   发布文章

关于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.

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客