为什么这个字符串被神秘地修改了



如果答案很简单,请原谅我,但我不知道是什么原因造成的。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的输出。

相关内容

  • 没有找到相关文章

最新更新