【发布时间】:2022-01-18 23:16:22
【问题描述】:
为什么我无法使用 open 方法打开我的文件?
这是我的源代码:
char* dest;
char cwd1[256];
if (getcwd(cwd1, sizeof(cwd1)) == NULL)
perror("getcwd() error\n");
else
dest=cwd1;
char* destPlus=strcat(dest,"/");
char*myPathName =strcat(destPlus,fileName);
printf("the path name1: %s \n",myPathName);
char* outputPathName=myPathName;
int d;
// FILE* fd;
if(append)
d= open(outputPathName, O_WRONLY, O_APPEND | O_CREAT|O_WRONLY|O_TRUNC);
else
d= open(outputPathName, O_WRONLY,O_CREAT|O_WRONLY|O_TRUNC);
if(d<0){
printf("hello, there's an error with your file, plz check it out\n");
return;
}
在这段代码中 d 将是负数,为什么? 注:路径是真的我查了一下,错误号是2
【问题讨论】:
-
你是在追加还是不追加?而 errno 的值为 ...?
-
您是否尝试检查
outputPathName的值?是否有意义?您是否尝试检查errno结果?报什么错误? -
所有不同的点变量有什么用?你只需要一个数组来保存所有相关的部分,足够大以适应路径和所有你需要添加到它的蚂蚁。然后使用
snprintf使用所需的所有信息对其进行格式化。最后将此格式化字符串传递给open。此外,print 该数组中的字符串,在开头和结尾加上引号,以确保没有前导 ot 尾随空格。并打印open设置的实际错误(例如strerror(errno)) -
路径名是真的我查了一下,errno是2
-
@Someprogrammerdude,谢谢兄弟,我试试。