文件当前保存到/Users/benreaby,而我希望它保存到可执行文件的源文件夹
// Filename that I want to save to the source
// folder that the executable is located in
#define FILENAME "TACmFile.txt"
int main(int argc, const char * argv[]) {
fp = fopen(FILENAME, "w");
fprintf(fp, "hello world");
fclose(fp);
return 0;
}
字符串
2条答案
按热度按时间llycmphe1#
当运行一个可执行文件时,如果使用了相对文件路径,那么TACmFile.txt文件将被写入到运行该可执行文件时的当前工作目录中。这不一定与源代码所在的目录有任何相似之处。
如果你想覆盖它,你需要指定一个 * 绝对 * 路径。你可能需要从配置文件中读取你的可执行文件来获取文件路径信息。
r8uurelv2#
这里有一个解决方案。它取决于argv[0]中存在的可执行文件路径和文件名。您的代码在这里被修改以添加新函数merge_pf(),该函数使用在argv[0]中找到的可执行文件的路径。它从路径中剥离可执行文件名并将所需的文件名附加到同一路径。这个新字符串可用于打开程序目录中您选择的文件。
这段代码由我测试为win32.路径标记('/')添加了Unix -因此,应该也有工作- * 但没有测试 *.请测试/检查,看看你的操作系统是否支持argv[0]包含程序路径和文件名的关键原则,然后再使用这段代码:
字符串
测试你的操作系统是否在arv[0]中有程序路径和文件名可能看起来像这样...(可能存在一种更安全的方法):
型
成功看起来像这样:
型