使用fopen和临时系统变量

时间:2015-04-22 11:09:14

标签: c windows file

我对fopen有些怀疑...

我可以执行以下操作吗?

fopen("%temp%" , "r");

或者我需要使用特定于Windows的功能吗?

2 个答案:

答案 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