| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 673 人关注过本帖
标题:编了个小程序,有点小错误,帮忙改改啊
只看楼主 加入收藏
吴小杰
Rank: 3Rank: 3
来 自:。。。。。。
等 级:论坛游侠
帖 子:58
专家分:107
注 册:2011-11-11
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
编了个小程序,有点小错误,帮忙改改啊
这是我编的统计字数的(包括标点),但输出的结果总是比真实值多,当换行的时候会多统计出一个。。。。。。。自己改不了了,放到上面帮我改下
#include<stdio.h>
#include<stdlib.h>
int main ()
{   FILE*fp;
    char filename[50],ch;
    int n=0;
    printf("input the filename\n");
    scanf("%s",filename);
    if((fp=fopen(filename,"r"))==NULL)
        {printf("open file fail\n");
        exit(0);
        }
    else
        for(ch=fgetc(fp);!feof(fp);ch=fgetc(fp))
        {  
            n++;
            if(n>32&&n<127)
                n++;
        }
    n=n/2;
    printf("%d",n);
    return 0;
}
搜索更多相关主题的帖子: 统计 include file 
2012-01-18 13:15
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:4 
for(ch=fgetc(fp);!feof(fp);ch=fgetc(fp))        
{
            n++;
            if(n>32&&n<127) //这行n应该换成ch
               n++;        
}

你的代码我看不懂,为什么两次n++,最后又n/2了

总有那身价贱的人给作业贴回复完整的代码
2012-01-18 13:48
吴小杰
Rank: 3Rank: 3
来 自:。。。。。。
等 级:论坛游侠
帖 子:58
专家分:107
注 册:2011-11-11
收藏
得分:0 
那里是ch写错了,第二次的n++当ch为字母或者为标点的时候,以为一个汉字占两个字节,所以把字母标点都多加一,最后除二。。。。。。可是运行结果不对。。。。。。。
2012-01-18 18:12
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:4 
漢字統計為1呀

授人以渔,不授人以鱼。
2012-01-18 18:14
吴小杰
Rank: 3Rank: 3
来 自:。。。。。。
等 级:论坛游侠
帖 子:58
专家分:107
注 册:2011-11-11
收藏
得分:0 
?什么个情况
2012-01-19 01:35
apull
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:三体星系
等 级:版主
威 望:216
帖 子:1506
专家分:9241
注 册:2010-3-16
收藏
得分:4 
windows里的换行是2个字符,分别是10和13。。
2012-01-19 01:58
bianchenyang
Rank: 2
等 级:论坛游民
帖 子:21
专家分:26
注 册:2011-11-14
收藏
得分:4 
汉字内码小于零,分开算,不是32到127。
2012-01-19 08:58
ouyangouyang
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:273
专家分:579
注 册:2009-10-8
收藏
得分:4 
#include<stdio.h>
#include<stdlib.h>
main ()
{   FILE*fp;
    char filename[50],ch;
    int n=0,k=0;
    printf("input the filename\n");
    scanf("%s",filename);
    if((fp=fopen(filename,"r"))==NULL)
        {printf("open file fail\n");
        exit(0);
        }
    else
        for(ch=fgetc(fp);!feof(fp);ch=fgetc(fp))
        {
          if(ch<0) {k++;}
          else{
              n++;
              if(ch==10) n--;
              }
              printf("%d\n",ch);
        }
    printf("%d",n+k/2);
    system("pause");
}
这样子可不可以?

多少恨, 昨夜梦魂中。 还似旧时游上苑, 车如流水马如龙; 花月正春风!
2012-01-20 15:03
吴小杰
Rank: 3Rank: 3
来 自:。。。。。。
等 级:论坛游侠
帖 子:58
专家分:107
注 册:2011-11-11
收藏
得分:0 
嗯,谢谢你,也谢谢大家。。。。。。。。。。。。。。。。。
2012-01-20 18:01
快速回复:编了个小程序,有点小错误,帮忙改改啊
数据加载中...
 
   



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

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