有时候需要建立临时文件、临时文件夹,如果不希望使用相对路径,则可以在程序(*.exe)下建立生成相关内容。
1 MFC
使用GetmoduleFileName(),使用举例:
TCHAR szFileName[256] = {0};
GetModuleFileName(NULL, szFileName, 255); // 获取的是exe完整路径
string strDerectory = szFileName; // 转为string,不知会不会丢失内容
string::size_type iPos = strDerectory.rfind("\\");
if(iPos != string::npos)
{
string g_kml_fName = strDerectory.substr(0, iPos); // 得到exe所在完整路径
g_kml_fName += "\\data\\tracking.kml";
}
PS:GetmoduleFileName()的MSDN解释:The GetModuleFileName function retrieves the full path and filename for the executable file containing the specified module. 关于该函数的进一步解释,我是不求甚解,可参考MSDN。
2 C
使用getcwd(),需包含头文件(#include )
int get_working_dict(char *cwd)
{
char *buffer = NULL;
if ((buffer = getcwd(NULL, 0)) == NULL)
{
perror("getcwd error");
return 0;
}
else
{
strcpy(cwd, buffer);
free(buffer);
return 1;
}
}