开发者社区> 问答> 正文

c入门的行计数问题,为什么结果总是0?

行计数程序:
1 #include 
2 
3 main()
4 { 
5 int c, nl;
6 
7 nl = 0; 
8 while ((c = getchar()) != EOF);
9 if (c == '\n')
10 ++nl;
11 printf("%d\n", nl);
12 } 
13 
执行:
Press ENTER or type command to continue
\n
\n
\n
\n
0
shell returned 2
Press ENTER or type command to continue
Press ENTER or type command to continue
a
a
a
a
0
shell returned 2
最后一行按crtl+d,为什么都是0。还有最后的shell returned为什么是2?谢谢

展开
收起
a123456678 2016-03-20 10:30:48 1697 0
1 条回答
写回答
取消 提交回答
  • 直接去掉while语句后的分号就可以了
    while循环执行后边的语句是一条(或通过花括号得到一个块),因为直接分号了,认为循环的是空语句
    去掉后则认为满足循环后执行if判断语句,而++nl;又属于判断语句包含的内容,所以即使没有花括号也可以,
    但不能在循环语句后有分号,这个必须注意,任何循环都一样。

    2019-07-17 19:08:52
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
小程序云应用入门实操系列课程 - 第四讲 立即下载
小程序云应用入门实操系列课程 - 第一讲 立即下载
给运维工程师的Python实战课 立即下载