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