C - 无法在 OSX 中的当前目录中创建文件

C - Can't create a file on the current directory in OSX

我必须将数据保存在一个项目文件中(C 语言)。 所以我想使用 fopen 来使用 fprintf 在文件上输出我的字符串值。

所以,我这样做:

FILE * file;
file = fopen("./tmp.txt","w+");
outputData(); //my fonction to fprintf in the file
fclose(file);

但是当我这样做时,它不在当前目录中,而是在我的目录中 我的计算机的用户目录(在 OSX 上)而不是应用程序所在的当前目录。

那么,如何更改输出文件的当前目录?没有硬编码?

我正在执行我的程序:“/Users/Guillaume/OneDrive/Ephec/Os/Project1”

文件 tmp.txt 创建于: “/Users/Guillaume” 我想在与我的项目相同的目录中创建文件

您可以尝试使用完整路径,如 linux:

FILE * file;
file = fopen("/home/toto/tmp.txt","w+");

您还可以使用 access

检查文件访问权限

我找到了解决方案。

char path[PATH_SIZE/2];
strcpy(path,realpath(argv[0],0));

我使用程序的 argv[0] 部分来获取路径 结合 realpath()

Man page : http://manpagesfr.free.fr/man/man3/realpath.3.html

并将其存储在预定义的字符串路径中