如果答案很简单,请原谅我,但我不知道造成这种情况的原因。 PathCombineA函数以某种方式修改mypath变量。如果您运行该程序,您将看到我的意思。 (你必须链接Shlwapi.lib)
#include <Windows.h>
#include <Shlwapi.h>
#include <iostream>
using namespace std;
int main()
{
CHAR temp[MAX_PATH];
CHAR mypath[MAX_PATH];
GetModuleFileNameA(NULL, mypath, MAX_PATH);
GetTempPathA(MAX_PATH, temp);
LPSTR name = PathFindFileNameA(mypath);
cout << mypath << endl;
PathCombineA(name, temp, name);
cout << mypath << endl;
getchar();
return 0;
}
PathCombineA之前的输出
C:\用户\所有者\桌面\等\调试\ etc.exe
PathCombineA之后的输出
C:\ Users \ Owner \ Desktop \ etc \ Debug \ C:\ Users \ Owner \ AppData \ Local \ Temp \ etc.exe
如果你们知道发生了什么事,请告诉我!
谢谢!
答案 0 :(得分:1)
PathFindFileNameA返回指向mypath中字符串最后一部分的指针。 然后,将该指针作为PathCombineA的输出参数传递给mystring缓冲区。
如果你不想修改mystring,你需要另一个缓冲区来保存PathCombineA的输出。