Code:
#include <stdio.h>
#include <windows.h>
TCHAR* SysErrorMessage(int ErrorCode) {
TCHAR szBuf[80];
LPVOID lpMsgBuf;
// DWORD dw = GetLastError();
DWORD dw = ErrorCode;
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM,
NULL,
dw,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR)&lpMsgBuf,
0, NULL );
wsprintf(szBuf, (LPTSTR)lpMsgBuf);
LocalFree(lpMsgBuf);
return szBuf;
}
int main(int argc, char* argv[])
{
printf("%s", SysErrorMessage(5));
return 0;
}
- übergebenen Wert aus "ErrorCode" wird jetzt zur Umwandlung genommen
- Ausgabe geändert in "printf("%s", SysErrorMessage(5));"
Ich würde einen Char-Array als Parameter übergeben, in den du schreibst, oder du holst Speicher innerhalb der Funktion und gibst ihn nach dem Aufrufen wieder frei.