读书人

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

发布时间: 2012-02-05 12:07:15 作者: rapoo

[求助]文件读取中指针位置的问题!
我需要读取的文件比较大,有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。
你试试都是二进制方式。

读书人网 >C++

热点推荐