C读文件循环读数据失败

流年逝水 发布于 2014/06/26 11:09
阅读 137
收藏 0
FILE *fp,*fw;
    int i = 0,j=0;
    char id[32];
    unsigned int pid;
    short type;
    long tm;
    char ip[257];


    fp=fopen("wtmpx","rb");
    fw = fopen("my","wb");


    if(fp==NULL || fw==NULL)
    {
        cout<<"打开文件失败"<<endl;
        exit(-1);
    }






    while(1)
    {
        memset(id,0,sizeof(char)*32);


        i=fread(id,32,1,fp);
        if(i<=0)
        {


            break;
        }
        fseek(fp,36,SEEK_CUR);
        memset(&pid,0,sizeof(unsigned int));
        fread(&pid,4,1,fp);
        memset(&type,0,sizeof(short));
        fread(&type,2,1,fp);
        fseek(fp,6,SEEK_CUR);
        memset(&tm,0,sizeof(long));
        fread(&tm,4,1,fp);
        fseek(fp,30,SEEK_CUR);
        memset(ip,0,sizeof(char)*257);
        fread(ip,257,1,fp);


        fseek(fp,1,SEEK_CUR);
        printf("%s %d %d %ld %s\n",id,pid,type,tm,ip);


        fprintf(fw,"%s %d %d %ld %s\n",id,pid,type,tm,ip);
    }








    cout<<"文件读取保存成功"<<endl;


    fclose(fw);

    fclose(fp);


一条数据372字节  跳跃性读数据

循环读数据一条都读不出来,但是吧while中的代码放在外面 就可以读数据


加载中
0
二的思维
二的思维
为毛用这么多的 fseek? 建议每次取 372 bytes 出来处理,完成后再取下一个 372 bytes 。
流年逝水
我不想一整块读 我只要我自己的数据 而且 我把while循环里面的语句放大外面是可以读数据的
0
机智的熊孩子
这是达内那个项目?
流年逝水
嗯 只是这里为什么会出错呢?把while里面那段读文件的代码拿到while外面就可以读数据
0
魔神翼
魔神翼
C与C++的混合...
返回顶部
顶部