标题:C读取文件的问题
取消只看楼主
xiedj
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2013-5-30
结帖率:66.67%
已结贴  问题点数:30 回复次数:2 
C读取文件的问题
自己编辑了一个简单的test.txt文件放在桌面,之后使用以下函数读取文件内容,发生异常中断,且读取不正确,不知道问题在哪里,望指教,谢谢各位!(test.txt和出错问题图片都放在附件的压缩文件
test.zip (35.6 KB)
里了)

#include"iostream"
using namespace std;
int main(void)
{
    char * pBuf=new char[500];
    memset(pBuf,'\0',sizeof(pBuf));
    cout<<"pBuf="<<pBuf<<endl;
    if(NULL==pBuf)
    {
        cout<<"pBuf memory allocate fail!\n";
        exit(-1);
    }
    char * pstr[255];
    FILE * pFile=fopen("C:\\Users\\Administrator\\Desktop\\test.txt","r");
    if(NULL==pFile)
    {
        cout<<"pFile==NULL\nFile can't open!";
        exit(-1);
    }
    fseek(pFile,0,SEEK_SET);
    char ch='\0';
    unsigned int i=0;
    while(!(feof(pFile)))
    {
        memset(pBuf,'\0',sizeof(pBuf));
        for(i=0;((ch=fgetc(pFile))!='\n');++i)
        {
            pBuf[i]=ch;
            //cout<<"ch="<<ch<<endl;
        }
        pBuf[i]='\0';
        cout<<"pBuf="<<pBuf<<endl;
        //system("pause");
    }
    rewind(pFile);
    fclose(pFile);
    return 0;
}
搜索更多相关主题的帖子: include 压缩文件 memory 图片 
2014-12-16 11:06
xiedj
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2013-5-30
得分:0 
这只是一个测试程序,因为实际要读取的txt文件数据较大,其后对数据的处理也有点复杂。问题的关键是读取文件结尾时出错。
2014-12-16 11:57
xiedj
Rank: 1
等 级:新手上路
帖 子:62
专家分:0
注 册:2013-5-30
得分:0 
问题的关键是这一句——for( int ch; i<500-1 && (ch=fgetc(pFile), ch!=EOF && ch!='\n'); ),当时其实也考虑到了这一点,一开始写的是:ch=fgetc(pFile)!= '\n' && ch=fgetc(pFile)!=EOF,但是转念一想,这样的话,文件位置指针会多跳一个字节的内容,且想当然地认为外层的while( !feof(pFile) )一样能起到终止文件的作用,却忽略了内层的for循环有可能先遇到EOF,从而产生死循环的问题。谢谢大家,大家的意见都有一定的价值,相对来说,还是rsjp给的帮助比较大,给他的分也会多些。
2014-12-16 17:47



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-439998-1-1.html




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

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