c - 标记 O_CREAT 不创建文件

标签 c

我有一个程序试图创建一个文件并写入其中,但由于某种原因,当我使用 O_CREAT 标志时出现错误

No such file or directory

产生错误的代码部分:

(char *) datafile = malloc(30);
strcpy(datafile, "~/Desktop/notes");
fd =  open(datafile, O_CREAT | O_WRONLY | O_APPEND, S_IRUSR | S_IWUSR); <----- here I get the error

最佳答案

"~/Desktop/notes"

那里没有名为~ 的目录。一些程序(最著名的是 bash 之类的 shell)将 ~ 扩展到当前用户的主目录,但是 open 不是 shell,也不会这样做。

如果你需要相对于主目录的路径,你可以这样做:

char* home = getenv("HOME");
if (home) {
     strcpy(datafile, home);
     strcat(datafile, "/Desktop/notes");
     ...
} else {
    ... report an error
}

关于c - 标记 O_CREAT 不创建文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54840228/

相关文章:

c - 为什么 FreeImage 加载 BGR 格式的图像?

检查函数调用不作为参数传递(C 宏)

c - c 的头文件中带有指向它的指针的结构问题

c - 在 C 中将值 -1 作为 size_t 返回值返回的后果是什么?

c - 如何将空参数传递给函数

c - fgets() 在输入时创建另一个字符串副本?

C:计算正位的偷偷摸摸的方法?

c - StringGrid C++ 构建器中的输出矩阵元素

c - 关于在c中使用fgets和scanf读取输入的问题

c - 不使用 [ 或 ] 查找数组中元素的总和