fopen(“filename”,“wb”)返回null

时间:2018-06-08 09:24:17

标签: c++ macos g++ fopen

这样的代码:

#include <iostream>

using namespace std;
int main(){
    FILE* to = NULL; 
    to = fopen("cpp", "wb");
    if(to != NULL)
        cout << 1 << endl ;
    cout << 2 << endl;
}

使用选项g++编译-o,然后运行。返回“2”。要查看带有ls -al的cpp文件夹:drwxr-xr-x 2 anyone staff 64 6 8 08:31 cpp

为什么它返回“2”。为什么我无法打开文件夹进行写入?

2 个答案:

答案 0 :(得分:1)

fopen用于打开文件而不是文件夹,你确定cpp是文件夹还是你做错了?

答案 1 :(得分:0)

这是因为您尝试打开文件夹进行编写。根据{{​​3}},您会收到[EISDIR]错误:

  

[EISDIR]   
命名文件是目录,模式需要写访问权。

您可以通过打印strerror(errno))来确定错误:

cout << strerror(errno)) << endl;