[英]arguments of a scanf statement
我写了这段代码:
scanf("%d \n", &n);
for(i=0;i<n;i++)
printf("%d \n",i);
它没有打印。 我意识到对scanf的调用中有一个'\ n'。 当我删除它时,我得到了预期的 output。 当 scanf 格式字符串包含 '\n' 时,为什么不给出 output?
是什么原因?
scanf 隐式读取到行尾。 由于您的格式字符串中有一个 '\n',因此它正在读取您的第一个返回值作为格式的一部分。 然后它继续等待它期望作为终止符的 '\n'。 如果您提供了另一个令牌,然后返回,那么您将获得预期的结果。
因此,如果您提供:
2
7
你会得到 output:
0
1
因为,第一个数字 (2) 已与您的第一个格式说明符匹配。 我不确定的是为什么您需要提供另一个令牌(只需在下一行按 return 不起作用)。 我认为这是因为 scanf 至少需要一个非空白字符,但我可能是错的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.