Почему эта строка загадочно модифицирована?

Пожалуйста, прости меня, если ответ на этот вопрос прост, но я понятия не имею, что является причиной этого. Функция 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


Если вы, ребята, знаете, что происходит, пожалуйста, скажите мне!

Спасибо!

0

Решение

PathFindFileNameA возвращает указатель на последнюю часть строки в mypath.
Затем вы передаете этот указатель в буфер mystring как выходной параметр PathCombineA.

Если вы не хотите, чтобы mystring был изменен, вам понадобится еще один буфер для хранения вывода PathCombineA.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]