| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3364 人关注过本帖
标题:dev++输入教材上的示例程序不会运行
只看楼主 加入收藏
yliu07
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2016-8-11
结帖率:0
收藏
已结贴  问题点数:20 回复次数:12 
dev++输入教材上的示例程序不会运行
之前只接触过python
c语言新手上路,下了一个dev c++就直接开始按照教材一点一点写一些简单程序。遇到一些问题:

书上的示例程序,统计行数
#include<stdio.h>
main()
{
    int cnt = 1;
    int c;
    while((c=getchar())!=EOF){
        
        if(c=='\n')
            cnt++;
        
    }
    printf("%d\n",cnt);
    return 0 ;
   
 }

这个程序有两个问题:
1.写好之后编译运行,弹出cmd黑框,请问我该怎么输入在cmd黑框里输入多行字符?或者说这个程序怎么才能正常使用(比如说我需要统计一个txt文件的行数,该怎么做呢?)?

2.这个程序不能正常运行。输入一行文字回车后应该打印cnt的原始值也就是1才对。可是我按了回车之后cmd的光标只是移动到下一行,并不执行printf指令。这个问题在之前好几个含有while((c=getchar())!=EOF)的程序中碰到过。

很苦恼,自己看不出程序本身的问题。可能是因为运行环境?或者是dev c++我不会用的原因?
恳求大神们指点!谢谢!
搜索更多相关主题的帖子: 新手上路 include return 
2016-08-11 17:23
砖家的谎言
Rank: 12Rank: 12Rank: 12
等 级:禁止访问
威 望:30
帖 子:693
专家分:3898
注 册:2013-12-6
收藏
得分:10 
不会吧,你知道getchar的意思吗,还有EOF 代表的是什么意思都理解么,写代码的习惯也不好哦,加我们群问吧

我不是砖家,要努力成为砖家。
2016-08-11 17:42
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1745
专家分:3216
注 册:2015-12-2
收藏
得分:0 
EOF好像是文件的结尾。另外这个程序是什么意思我没看懂。统计文件首先要打开文件,用fopen.
收到的鲜花
  • yliu072016-08-11 23:24 送鲜花  1朵   附言:我很赞同
  • yliu072016-08-11 23:24 送鲜花  1朵   附言:我很赞同
  • yliu072016-08-11 23:24 送鲜花  2朵   附言:好文章
2016-08-11 18:43
yliu07
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2016-8-11
收藏
得分:0 
回复 3楼 ehszt
对的,EOF是末尾。 这个程序的意思是,如果读到换行符\n,则行数+1,最后打印行数
2016-08-11 18:49
yliu07
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2016-8-11
收藏
得分:0 
回复 2楼 砖家的谎言
我知道的,也用EOF和getchar成功运行过其他的程序,但是这个就是不行,不知道为何
2016-08-11 18:51
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1745
专家分:3216
注 册:2015-12-2
收藏
得分:0 
#include<stdio.h>
 main()
 {
     int cnt = 0;
     int c;
     FILE *fp;
     fp=fopen("a.txt","r");
     while((c=fgetc(fp))!=EOF){
         
         if(c=='\n')
             cnt++;
         
     }
     printf("%d\n",cnt);
     getchar();
     return 0 ;
     
  }
收到的鲜花
  • yliu072016-08-11 23:25 送鲜花  2朵   附言:好文章
  • yliu072016-08-11 23:25 送鲜花  3朵   附言:好文章
  • yliu072016-08-11 23:25 送鲜花  3朵  
2016-08-11 19:14
yliu07
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2016-8-11
收藏
得分:0 
回复 6楼 ehszt
太感谢您了!
您这个是可以的!

您能看出我写的那个为什么会不执行呢?
2016-08-11 20:33
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1745
专家分:3216
注 册:2015-12-2
收藏
得分:0 
你这个是死循环呀,文件指针都没用哪来的EOF?
2016-08-11 20:42
yliu07
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2016-8-11
收藏
得分:0 
回复 8楼 ehszt
前辈,是这样的:
您说的意思我大概懂,不过指针那部分我还没有学到。
教材导言部分的一些简单的示例竟然都是这样写的,所以我才怀疑是不是其他的问题。。。

这为什么是个死循环呢?直接翻译过来不就是:当c不是终止符的时候,碰到换行符则行数+1吗?

之前简单的程序也不需要文件指针,比如:
#include<stdio.h>
main()
{
    int c;
    while((c =getchar())!=EOF)
        putchar(c);
}
上面这个字符复制程序运行后,在cmd黑框里输入一些字符,回车,就得到复制的一行字符了。

感谢指点!
2016-08-11 21:57
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1745
专家分:3216
注 册:2015-12-2
收藏
得分:0 
哦,也不算死循环,
2016-08-11 22:44
快速回复:dev++输入教材上的示例程序不会运行
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027031 second(s), 11 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved