无法打开文件C

无法打开文件C,c,file-io,file-descriptor,C,File Io,File Descriptor,对于以下代码片段,我得到一个错误: Unable to open file: No such file or directory 重定向\u ptr是char** 我试过打印重定向_ptr[0],它可以正确打印。你知道问题出在哪里吗 if ((in_fd = open(redirect_ptr[0], O_RDWR | O_CREAT)) == -1) { perror("Unable to open file"); return -1; } 创建文件时,open()需要一个附加

对于以下代码片段,我得到一个错误:

Unable to open file: No such file or directory
重定向\u ptr是char** 我试过打印重定向_ptr[0],它可以正确打印。你知道问题出在哪里吗

if ((in_fd = open(redirect_ptr[0], O_RDWR | O_CREAT)) == -1) {
   perror("Unable to open file");
   return -1;
}

创建文件时,open()需要一个附加参数,即要创建的文件的权限位。 你需要做些什么

if ((in_fd = open(redirect_ptr[0], O_RDWR | O_CREAT, 0644) == -1) 
这可能不是您得到的错误的原因,但是如果错误是“没有这样的文件或目录”,那么这就是错误所在,您的程序无法找到该文件

可能文件名中有一些不可打印的字符,或者名称以空格、换行符或类似字符结尾,或者名称拼写错误,或者大小写错误,或者路径是与基于进程当前工作目录的文件不匹配的相对路径

在一对“”中打印文件名通常很有帮助,这样您就可以看到是否有一些不应该存在的空白。添加

 printf("Filename: '%s'\n",redirect_ptr[0]);

到您的代码。如果它看起来不错,请在它打印出来的文件名上做一个ls-l,放在进程的工作目录中。

您确实有要打开的文件吗?。是的,它无论如何都应该创建它添加文件名的调试打印