C:无法创建或附加到文件

时间:2017-10-02 00:09:46

标签: c file

我正在尝试为读取和写入操作打开文件。 如果文件已存在,则应附加。 (我希望能够写到它,也可以稍后阅读)

但是,如果该文件存在,我无法附加(我得到权限被拒绝:无法创建文件)

int main()
{
       int file;
       file = open("redirect.txt", O_RDWR | O_APPEND | O_CREAT, 777);
       if(!(file == -1)) //edited per comment
       {
            close(file);
       }
      else
           perror("File could not be created\n");

     return 0;
}

如果新文件不存在,则只打开一个新文件,但如果现有文件存在,则不会附加到该文件。

1 个答案:

答案 0 :(得分:2)

您忘记了open()的mode参数必须是八进制的。这将有效:

file = open("redirect.txt", O_RDWR | O_APPEND | O_CREAT, 0777);

正如zwol所提到的,创建0666的文件通常是个好主意(因为它们不需要是可执行的)。