2017-03-09 26 views
0

形势文件写作()FSEEK()与SEEK_END

我试图以编程方式编写一些代码来一个文件,然后进行编译。我需要能够在不替换整个文件的情况下添加代码。我在文件末尾有一个},我需要删除它才能添加下一批代码,之后读取}

我的代码是目前这样的:

//Writes from an offset from the end of a file. 
    static bool Write(const char *FilePath, const char *Text) 
    { 
     FILE *f; 
     errno_t error; 
     int seekerror; 
     if (!(error = fopen_s(&f, FilePath, "w"))) 
     { 
      //one byte offset from the end of the file. 
      if (!(seekerror = fseek(f, -1, SEEK_END))) 
      { 
       fwrite(Text, sizeof(char), strlen(Text), f); 
       fclose(f); 
       return true; 
      } 
     } 
     return false; 
    } 

问题

我相信wa标志从fseek()重写指针位置?所以我似乎无法覆盖文件末尾的}

有没有人知道我可以使用SEEK_END来写偏移量?

回答

1

请勿使用"w"模式代替fopen,请使用"r+"代替。

"r" - 打开文件进行阅读。该文件必须存在。

"w" - 创建一个空文件用于书写。如果已存在同名文件 ,则其的内容将被删除,并将该文件视为新的空文件。

"a" - 附加到文件。写入操作,在 文件末尾追加数据。如果该文件不存在,则会创建该文件。

"r+" - 打开一个文件更新读取和写入。该文件必须存在。

"w+" - 创建一个用于读取和写入一个空文件。

"a+" - 打开一个文件进行读取和追加。