《C Programming Language》中的一段关于统计输入的字符数代码

2014-07-30 12:15:37 +08:00
 razrlele
#include <stdio.h>

int main()
{
double nc;
for(nc = 0; getchar() != EOF; ++nc)
;
printf("%.0f\n", nc);
}

为什么我如果输入
1
2
3
然后ctrl + D结束输入输出的结果是
6
呢?
我只输入了三次,nc不应该只自加了3次么?
1101 次点击
所在节点    C
7 条回复
PalmChou
2014-07-30 12:21:36 +08:00
还有3个\n
insaneDream
2014-07-30 12:23:05 +08:00
getchar()会接收回车键
TerrenceSun
2014-07-30 12:24:50 +08:00
回车也会被getchar读到,所以是6个。
tonyluj
2014-07-30 12:26:55 +08:00
LZ的判断条件是EOF
实际输入是这样的:
1\n2\n3\nEOF
所以是6
razrlele
2014-07-30 12:30:00 +08:00
@tonyluj
@TerrenceSun
@makubx1
@PalmChou 谢谢解答,明白了!
jyjmrlk
2014-07-30 12:39:27 +08:00
补充一点:如果没记错的话书里面下个例子就是行计算,所以可以先把不明白的放一放,先别急。

另外,可以使用文件作输入的哦,省的自己一个个输入。比如有文件c.c,编译后生成a.out。可以这样运行: ./a.out < c.c
razrlele
2014-07-30 13:09:40 +08:00
@jyjmrlk 谢谢提醒,大赞!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/125241

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX