我有一个试图创建文件并写入文件的程序,但是由于某些原因,当我使用O_CREAT标志时会出现错误
没有这样的文件或目录
代码中产生错误的部分:
(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
答案 0 :(得分:6)
"~/Desktop/notes"
其中没有名为~
的目录。某些程序(最著名的外壳,例如bash
)将~
扩展到当前用户的主目录,但是open
不是外壳程序,因此不会这样做。
如果您需要相对于主目录的路径,则可以执行以下操作:
char* home = getenv("HOME");
if (home) {
strcpy(datafile, home);
strcat(datafile, "/Desktop/notes");
...
} else {
... report an error
}