读取偏移的写作

时间:2011-10-14 23:54:41

标签: c++ c file-io

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;
    }   
}

到目前为止,这是我的班级功能。我基本上打开一个文件,检查是否确实打开了,如果没有出去的话。写入文件,检查文件是否确实写入文件是否返回true。否则返回false。正如你可以通过我的参数告诉我,我想创建一个偏移量,我可以给出一个特定的偏移量,即10,从10开始,然后从那里开始写。我知道我确实需要使用fseek,但我不能假设我在文件的开头或文件中的任何位置。我很确定我需要使用SEEK_SET,但我可能错了。有关实施上述愿望的任何想法?感谢。

1 个答案:

答案 0 :(得分:2)

如果您在没有附加设置的情况下使用fopen(就像您一样,“wb”会创建一个空文件),您可以假设您处于开头。

无论如何,SEEK_SET将位置设置为从头开始的给定偏移量。

如果文件没有你想要的偏移量(就像你的情况那样),那么问题是你需要做什么?如果只是填充 - 然后写offset填充字节,然后写你的内容,否则你可能想要使用“a”而不是“w”。 “w”截断文件的现有内容,而“a”打开以追加,并将位置设置为现有内容的末尾。

更多详情here