《c程序设计语言第二版 》14页,1.5.4 单词统计,例子运行无结果输出,求指导

xfrji 2017-11-07 08:26:53
《c程序设计语言第二版 》14页,1.5.4 单词统计,例子运行无结果输出,求指导
#include <stdio.h>
#define IN 1
#define OUT 0


int main ()
{
int c, nl, nw, nc, state;

state = OUT;
nl = nw = nc = 0;
while ((c = getchar()) != EOF){
++nc;
if (c == '\n')
++nl;
if (c == ' ' || c == '\n' || c == '\t')
state = OUT;
else if (state == OUT){
state = IN;
++nw;

}

}

printf("%d %d %d\n",nl,nw,nc);
}
更多
...全文
221 7 点赞 打赏 收藏 举报
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Classy&Q 2019-04-02
引用 6 楼 儿童节 的回复:
[quote=引用 5 楼 浪荡 的回复:] [quote=引用 1 楼 棉猴 的回复:] 个人感觉你的程序在while()循环中没有跳出来,也就是getchar()没有获取到EOF。 EOF是End Of File的简写,在MSDN中提到“To indicate a read error or end-of-file condition, getchar``returns EOF."就是说,当getchar()发生读取错误或者文件末尾时,getchar()函数返回EOF,而在Windows中,要用Ctrl+Z来表示EOF。所以,在输入字符串按下回车键之后,还要Ctrl+Z输入EOF。
求助大神,为什么我输入abc123 运行的结果是1 6 7 [/quote] 你啥时候把宏给改了?

#define OUT 0
//  #define OUT 1
[/quote] 感谢!!..没发现
  • 打赏
  • 举报
回复
Classy&Q 2019-03-31
引用 1 楼 棉猴 的回复:
个人感觉你的程序在while()循环中没有跳出来,也就是getchar()没有获取到EOF。 EOF是End Of File的简写,在MSDN中提到“To indicate a read error or end-of-file condition, getchar``returns EOF."就是说,当getchar()发生读取错误或者文件末尾时,getchar()函数返回EOF,而在Windows中,要用Ctrl+Z来表示EOF。所以,在输入字符串按下回车键之后,还要Ctrl+Z输入EOF。
求助大神,为什么我输入abc123 运行的结果是1 6 7
  • 打赏
  • 举报
回复
拥抱Linux 2019-03-31
引用 5 楼 浪荡 的回复:
[quote=引用 1 楼 棉猴 的回复:]
个人感觉你的程序在while()循环中没有跳出来,也就是getchar()没有获取到EOF。
EOF是End Of File的简写,在MSDN中提到“To indicate a read error or end-of-file condition, getchar``returns EOF."就是说,当getchar()发生读取错误或者文件末尾时,getchar()函数返回EOF,而在Windows中,要用Ctrl+Z来表示EOF。所以,在输入字符串按下回车键之后,还要Ctrl+Z输入EOF。


求助大神,为什么我输入abc123 运行的结果是1 6 7

[/quote]

你啥时候把宏给改了?


#define OUT 0
// #define OUT 1


  • 打赏
  • 举报
回复
自信男孩 2017-11-08
#include <stdio.h>
 
#define IN 1
#define OUT 0
 
int main ()
{
    int c, nl, nw, nc, state;
 
    state = OUT;
    nl = nw = nc = 0;
    while ((c = getchar()) != EOF){
        ++nc;
        if (c == '\n')
            ++nl;
        if (c == ' ' || c == '\n' || c == '\t')
            state = OUT;
        else if (state == OUT){
            state = IN;
            ++nw;
        }
 
    }
 
    printf("%d %d %d\n",nl,nw,nc);
 
    return 0;
}
没有输入怎么会有输出,程序在等待你的输入。 最后还要输入ctrl+D(Linux)或ctrl+Z(Windows)
  • 打赏
  • 举报
回复
hongwenjun 2017-11-08

输入完成,输入 ctrl+Z
  • 打赏
  • 举报
回复
棉猴 2017-11-07
个人感觉你的程序在while()循环中没有跳出来,也就是getchar()没有获取到EOF。
EOF是End Of File的简写,在MSDN中提到“To indicate a read error or end-of-file condition, getchar``returns EOF."就是说,当getchar()发生读取错误或者文件末尾时,getchar()函数返回EOF,而在Windows中,要用Ctrl+Z来表示EOF。所以,在输入字符串按下回车键之后,还要Ctrl+Z输入EOF。
  • 打赏
  • 举报
回复
相关推荐
发帖
C语言
加入

6.5w+

社区成员

C语言相关问题讨论
申请成为版主
帖子事件
创建了帖子
2017-11-07 08:26
社区公告
暂无公告