首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

[]文件读取中指针位置的有关问题

2012-02-05 
[求助]文件读取中指针位置的问题!我需要读取的文件比较大,有2000多行.判断文件长度的变量fd76556的时候就

[求助]文件读取中指针位置的问题!
我需要读取的文件比较大,有2000多行.判断文件长度的变量fd   =   76556的时候就不再循环了.而文件总长度file_size   =   80560,不明白是为什么!请大家帮帮忙!谢谢!


以下是程序源码:
#include         "stdafx.h "
#include         "string "
#include         "cstdio "
#include         "math.h "
#include         "cstdlib "
#include         "iostream "

using   namespace   std   ;

const   int   Isat   =   256;

void   main()
{
        FILE         *ifp;
        FILE         *ofp;

        char         buf1[Isat];
        char         buf2[Isat];

        long           fd   =   0;
        long           file_size   =   0;

        ifp   =   fopen( "MyFileName ", "r++ ");

        while(!feof(ifp))
        {
                memset(buf1,0,sizeof(buf1));
                               
                fgets(buf1,Isat,ifp);

                file_size   =   ftell(ifp);
               
        }
        fclose(ifp);
       
        ifp   =   fopen   ( "MyFileName ", "r+ ");


        ofp   =   fopen   ( "OutFileName ", "wt ");

        while(   !feof(ifp))
        {
                memset(buf1,0,sizeof(buf1));

                fgets(buf1,Isat,ifp);

                fd   =   ftell(ifp);
       
                fseek(ifp,0,SEEK_SET);

                while(   !feof(ifp)   )
                {
                        memset(buf2,0,sizeof(buf2));
                        fgets(buf2,Isat,ifp);

                }

                printf( "%d\n%d\n ",fd,file_size);
       
                if(fd   ==   file_size)//在这里判断文件位置时出错了!!
                {
                        break;
                }
                       


                fseek(ifp,fd,SEEK_SET);

        }

        fclose(ifp);
        fclose(ofp);
}


[解决办法]
检查你的文件打开方式,
全部使用 文本方式 操作。

如果有2进制方式和文本方式混淆,
可能得到的字符数会有误差 ~~
[解决办法]
lz这个程序写的有点乱,看了半天,大概才明白什么意思。
如果要计算长度,最好使用同样的方式打开文件,如果是b 就不要用t。
你试试都是二进制方式。

热点排行