C++ 从偏移量读写
这是到目前为止我的课堂功能。我基本上是在打开一个文件,检查它是否真的打开了,如果没有出来的话。写入该文件,检查该文件是否确实写入,然后返回true。否则返回false。从我的参数可以看出,我希望创建一个偏移量,在这里我可以给出一个特定的偏移量,即10,从10开始,然后从那里开始写。我确实知道我需要使用fseek,但我不能假设我在文件的开头或文件中的任何地方。我很确定我需要使用SEEK_SET,但我可能错了。对上述愿望有何想法?谢谢。如果您使用的C++ 从偏移量读写,c++,c,file-io,C++,C,File Io,这是到目前为止我的课堂功能。我基本上是在打开一个文件,检查它是否真的打开了,如果没有出来的话。写入该文件,检查该文件是否确实写入,然后返回true。否则返回false。从我的参数可以看出,我希望创建一个偏移量,在这里我可以给出一个特定的偏移量,即10,从10开始,然后从那里开始写。我确实知道我需要使用fseek,但我不能假设我在文件的开头或文件中的任何地方。我很确定我需要使用SEEK_SET,但我可能错了。对上述愿望有何想法?谢谢。如果您使用的fopen没有append设置(实际上,“wb”创建
fopen
没有append设置(实际上,“wb”创建的是一个空文件),您可以假定您是在开始
无论如何,SEEK\u SET
将位置设置为从起点开始的给定偏移量
如果文件没有您想要寻找的偏移量(在您的情况下),那么问题是您需要做什么?如果只是填充-然后写offset
填充字节,然后是内容,否则可能需要使用“a”而不是“w”。“w”截断文件的现有内容,而“a”打开用于追加,并将位置设置为现有内容的结尾
更多详细信息。我想说,如果文件中已经有10个字节,请转到偏移量7并从那里写入。或者从我给它的任何偏移量开始,可以从那里写N字节。另外,我想我也需要使用ftell,因为我可能想在文件中的某个地方写,以计算文件中的字节数itself@Questioneer如果文件中已有数据,请不要用“w”打开,而是使用“a”,然后使用
fseek
。可以使用fstat
获取有关文件大小的信息。你问了一大堆不相关的问题,为什么不直接阅读stdio
参考资料呢?文件中可能已经有数据,也可能没有数据。很抱歉这么含糊:如果是C++代码,为什么不使用<代码> fStase?
bool CReadWrite::write(unsigned long long offset, void* pvsrc, unsigned long long nbytes)
{ int WriteResult;
pFile = fopen("D:\\myfile.bin","wb");
if (!pFile){
puts("Can't open file");
return false;
}
//offset = fseek(pFile,offset,
WriteResult = fwrite (pvsrc, 1, nbytes, pFile);
if (WriteResult == nbytes){
puts("Wrote to file");
fclose(pFile);
return true;
}
else{
puts("Unable to write to File.");
fclose(pFile);
return false;
}
}