| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 436 人关注过本帖
标题:关于while (a[i]!=EOF) 报错的问题,请问各位大大
只看楼主 加入收藏
法拉利阿隆索
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-6-3
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
关于while (a[i]!=EOF) 报错的问题,请问各位大大
a[i]=fgetc(fp);
        
        i++;
        while (a[i]!=EOF)
        {
            a[i] = fgetc(fp);
               
            i++;
        }
这是一个从TXT文件读取字符串的问题,变量n 和a[i]数组均已定义为字符型,文件也已经打开,
以上只是出错部分,程序编译没问题,可以运行就会出错,用VC运行的,经调试发现错误在于while (a[i]!=EOF)这一句如果我把程序改为以下形式就没有问题了,为什么呢?
                a[i]=fgetc(fp);
        n=a[i];   
        i++;
        while (n!=EOF)
        {
            a[i] = fgetc(fp);
            n=a[i];        
            i++;
        }
搜索更多相关主题的帖子: 字符串 
2011-06-05 14:24
法拉利阿隆索
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-6-3
收藏
得分:0 
我把我运行成功的完整程序贴出来吧
#include <stdlib.h>
int main()
{
        FILE *fp,*fp1,*fp2;
        int a[100];
        int i,n;
        if((fp = fopen("test1.txt","rt"))==NULL)
        {
            printf("打开文件错误");
            getchar();
            exit(0);   
                    }
        i=0;
        a[i]=fgetc(fp);
        n=a[i];   
        i++;
        while (n!=EOF)
        {
            a[i] = fgetc(fp);
            n=a[i];        
            i++;
        }
        fclose(fp);
        if((fp1 = fopen("test2.txt","rt"))==NULL)
        {
            printf("打开文件错误");
            getchar();
            exit(0);            
        }        
        n=fgetc(fp1);
        a[i]=n;
        i++;
        while (n!=EOF)
        {
            a[i] = n;
            n = fgetc(fp1);
            
            i++;
        }
        fclose(fp1);
        n=i;
            if((fp2 = fopen("test3.txt","w+"))==NULL)
        {
            printf("打开文件错误");
            getchar();
            exit(0);            
        }
        for(i=0; i<n; i++)
        {
            fputc(a[i],fp2);
            putchar(a[i]);
        }
        fclose(fp2);
2011-06-05 14:31
法拉利阿隆索
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-6-3
收藏
得分:0 
最后漏了一个
}
2011-06-05 14:31
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
收藏
得分:20 
a[i]=fgetc(fp);
        
        i++;//删除试试
        while (a[i]!=EOF)
        {
            a[i] = fgetc(fp);
               
            i++;
        }
2011-06-05 14:54
法拉利阿隆索
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-6-3
收藏
得分:0 
谢谢呀,问题解决了,确实是这个i++的问题,原来是因为while (a[i]!=EOF)里的a[i]还没赋值,另外循环里的i++也会导致报错,
所以两个都要改,干脆把while (a[i]!=EOF)改成了while (a[i-1]!=EOF),程序就好了
2011-06-05 15:07
快速回复:关于while (a[i]!=EOF) 报错的问题,请问各位大大
数据加载中...
 
   



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

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