我对fopen有些怀疑...
我可以执行以下操作吗?
fopen("%temp%" , "r");
或者我需要使用特定于Windows的功能吗?
答案 0 :(得分:2)
不,你不能直接做(除非你想打开名为%temp
的文件)。有一个函数ExpandEnvironmentStrings
可以做到:
char path[MAX_PATH];
ExpandEnvironmentStrings("%TEMP%\\tempfile", path, MAX_PATH);
fopen(path, "r");
您可以手动执行此操作 - 在这种情况下,它可以更加轻松:
char path[MAX_PATH];
const char* temp = getenv("TEMP");
if(temp == NULL)
; // Return an error or try to guess user's Temp
// directory with GetUserProfileDirectory or similiar functions
snprintf(path, MAX_PATH - 1, "%s\\tempfile", temp);
fopen(path , "r");
但是您的案例有一个更清晰选项 - tmpfile
答案 1 :(得分:0)
在Windows上,您可以使用GetTempPath函数,该函数只是扩展您的%TEMP%
env变量。
请注意,从C ++ 17开始,您可以使用std::filesystem::temp_directory_path