回 帖 发 新 帖 刷新版面

主题:哪位高手看看我这个程序,我编了三个小时了……就一个问题

关于文件的:对指定的文件进行读写,就算该文件有多少个单词。各位高手运行一下就知道有什么错误了,我就是不知道怎么改…………

#include<stdio.h>
#include<stdlib.h>
void main()
{
    char ch;
    int n=0;
    FILE *fp;
    if((fp=fopen("34.txt","r"))==NULL)
    {
        printf("Can't open file\n");
           exit(0);
    }
    while(!feof(fp))
    {    
        ch=fgetc(fp);
        while(ch==' ')
        {ch=fgetc(fp);putchar(ch);}
        while(ch!=' ')
        {ch=fgetc(fp);putchar(ch);}
        n=n+1;
    }
    fclose(fp);
    printf(":%d\n",n);
}[em8][em8]

回复列表 (共6个回复)

沙发

程序应该没问题,但是运行起来不正常啊!

板凳

这个程序问题很大吧。。。算法上没考虑到\n,\t和数字这些字符,而且一般这类算文件中有几个单词的函数都会用flag标志位来判断单词的开始和结束
第二个问题是foef的运用,LZ你这样的写法会多读一个字符出来,把ch=fgetc(fp)拆成两个写成
ch=fgetc(fp)
while(!feof(fp)) {
   while(ch==' ')
    ....
    ....
    n = n + 1;   //这里改成 ++n
    ch = fgetc(fp);
}

3 楼


但是还不行啊! [em8]怎么弄都是显示的时候有问题。你运行的时候在你的电脑上好使 吗?

4 楼

我也期待怎么做列,等待中。

5 楼


我也期待怎么做列,等待中。

6 楼

随便翻网页,看到了,特意注册个号进来说说。
“程序应该没问题,但是运行起来不正常啊!”这句话太常见了,不过我告诉你,不要怀疑编译器,操作系统,代码犯错的可能最大。
这个代码很明显逻辑有问题,
while(ch!=' '){ch=fgetc(fp);...}在到文件尾部,陷入死循环了。改成
while(ch!=' '&&ch!=EOF){ch=fgetc(fp);...

我来回复

您尚未登录,请登录后再回复。点此登录或注册