首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >导致数据重叠的fseek()

导致数据重叠的fseek()
EN

Stack Overflow用户
提问于 2011-06-12 05:48:36
回答 2查看 190关注 0票数 0

我正在使用fseek和fread函数读取指定的文件块,然后将其写入另一个文件。由于某些原因,在目标文件中,我在其中写入的每个块之间有大约20个字节重叠。

有人能帮我找出这些垃圾的来源吗?这肯定是由fseek函数引起的,但我不知道为什么。

代码语言:javascript
复制
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;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-12 05:59:27

我猜你是在Windows上,正遭受着Windows文本模式的危害。将"b"添加到您传递给fopen的标志,即

代码语言:javascript
复制
pSrcFile = fopen ( "test.txt" , "rb" );
pDstFile = fopen ( "result1.txt", "a+b");
票数 2
EN

Stack Overflow用户

发布于 2011-06-12 15:15:56

您似乎是在从Dest文件中读取

代码语言:javascript
复制
bytesRead = fread (Dstc , 1, len, pSrcFile);

和写到源代码

代码语言:javascript
复制
bytesWritten = fwrite( Src , 1 , len , pDstFile );

可能,您必须将Dest更改为Src

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6318732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档