Пожалуйста, прости меня, если ответ на этот вопрос прост, но я понятия не имею, что является причиной этого. Функция 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 \ Владелец \ Desktop \ и т.д. \ Debug \ etc.exe
Вывод после PathCombineA
C: \ Users \ Владелец \ Desktop \ и т.д. \ Debug \ C: \ Users \ Владелец \ AppData \ Local \ Temp \ etc.exe
Если вы, ребята, знаете, что происходит, пожалуйста, скажите мне!
Спасибо!
PathFindFileNameA возвращает указатель на последнюю часть строки в mypath.
Затем вы передаете этот указатель в буфер mystring как выходной параметр PathCombineA.
Если вы не хотите, чтобы mystring был изменен, вам понадобится еще один буфер для хранения вывода PathCombineA.
Других решений пока нет …