《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);
}
更多
...全文
251 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
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。

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧