C++ 从偏移量读写

C++ 从偏移量读写,c++,c,file-io,C++,C,File Io,这是到目前为止我的课堂功能。我基本上是在打开一个文件,检查它是否真的打开了,如果没有出来的话。写入该文件,检查该文件是否确实写入,然后返回true。否则返回false。从我的参数可以看出,我希望创建一个偏移量,在这里我可以给出一个特定的偏移量,即10,从10开始,然后从那里开始写。我确实知道我需要使用fseek,但我不能假设我在文件的开头或文件中的任何地方。我很确定我需要使用SEEK_SET,但我可能错了。对上述愿望有何想法?谢谢。如果您使用的fopen没有append设置(实际上,“wb”创建

这是到目前为止我的课堂功能。我基本上是在打开一个文件,检查它是否真的打开了,如果没有出来的话。写入该文件,检查该文件是否确实写入,然后返回true。否则返回false。从我的参数可以看出,我希望创建一个偏移量,在这里我可以给出一个特定的偏移量,即10,从10开始,然后从那里开始写。我确实知道我需要使用fseek,但我不能假设我在文件的开头或文件中的任何地方。我很确定我需要使用SEEK_SET,但我可能错了。对上述愿望有何想法?谢谢。

如果您使用的
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;
    }   
}