Нет, ни GetTempPath
, ни GetTempFileName
не возвращают значение символа.В общем, функции C никогда не возвращают строки.Вместо этого вы передаете строковый буфер и длину этого строкового буфера, и функция заполняет строковый буфер запрошенной строкой.
Например, для вызова GetTempPath
,вы бы написали следующий код:
TCHAR szTempPathBuffer[MAX_PATH];
GetTempPath(MAX_PATH, // length of the buffer
szTempPathBuffer); // the buffer to fill
szTempPathBuffer
будет содержать путь к временному каталогу.
Обратите внимание, что вы, вероятно, не должны явно вызывать функции ANSI (те, которые сA
суффикс).Windows была полностью Unicode уже более десяти лет.Либо используйте макросы, определенные в заголовках Windows, которые автоматически разрешают правильную версию функции в зависимости от того, определен ли _UNICODE
, либо явно вызывайте версии Unicode (с суффиксом W
).
Поскольку вы вызываете версии ANSI, вы получаете строку ANSI (состоящую из char
значений), а не строку Unicode (состоящую из wchar_t
значений), что, вероятно, является методом SaveToFile
, которыйвы пытаетесь позвонить, ожидает.