fseek()导致数据重叠。

我用fseek和fread函数读取文件的指定块,然后将其写入另一个文件。由于某种原因,在目标文件中,每个写入的块之间大约有20个字节的重叠。 谁能帮我确定这个垃圾的来源吗?它肯定是由fseek函数引起的,但是我不知道为什么。
FILE *pSrcFile; 
FILE *pDstFile; 

int main()
{
int buff[512], i;
long bytesRead;

pSrcFile = fopen ( \"test.txt\" , \"r\" );
pDstFile = fopen ( \"result1.txt\", \"a+\");

for(i = 0; i < 5; i++)
{
    bytesRead = _readFile ( &i, buff, 512);
    _writeFile( &i, buff, bytesRead);
}

fclose (pSrcFile);
fclose (pDstFile);
}

int _readFile (void* chunkNumber, void* Dstc, long len) 
{
int bytesRead;
long offset = (512) * (*(int*)chunkNumber);

fseek( pSrcFile, offset, SEEK_SET);

bytesRead = fread (Dstc , 1, len, pSrcFile);

return bytesRead;
}

int _writeFile (void* chunkNumber, void const * Src, long len) 
{
int bytesWritten;
long offset = (512) * (*(int*)chunkNumber);

bytesWritten = fwrite( Src , 1 , len , pDstFile );

return bytesWritten;
}
    
已邀请:
        我猜您正在Windows上,并且遭受Windows文本模式的危害。在传递给
fopen
的标志中加上
\"b\"
,即
pSrcFile = fopen ( \"test.txt\" , \"rb\" );
pDstFile = fopen ( \"result1.txt\", \"a+b\");
    
        看来您是从
Dest
档案中读取
bytesRead = fread (Dstc , 1, len, pSrcFile);
并写到源
bytesWritten = fwrite( Src , 1 , len , pDstFile );
可能必须将
Dest
更改为
Src
。     

要回复问题请先登录注册