如果答案很简单,请原谅我,但我不知道是什么原因造成的。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: \Users\Owner\Desktop\etc\Debug\etc.exe
PathCombineA 之后的输出
C: \Users\Owner\Desktop\etc\Debug\C:\Users\Owner\AppData\Local\Temp\etc.exe
如果你们知道发生了什么,请告诉我!
谢谢!
PathFindFileNameA正在返回指向mypath中字符串最后一部分的指针。然后将该指针作为PathCombineA的输出参数传递到mystring缓冲区。
如果不希望修改mystring,则需要另一个缓冲区来保存PathCombineA的输出。