nicht sicher, ob die „zwei Schrägstriche“, was nicht nur etwas, das Sie in die sehen Debugger (da es einen einzigen Schrägstrich als ein escaped zeigen würde), aber - das größte Problem, das Sie haben, ist, dass Sie den Inhalt von szSystemDirectory
mit dem _stprintf
Aufruf überschreiben. Ich denke, was Sie wollten, war das \
Zeichen am Ende des Pfades zu drucken. Versuchen
TCHAR szSystemDirectory[MAX_PATH + 2]; // 1 for null terminator, 1 for the slash
UINT nCharactersWritten = GetSystemDirectory(szSystemDirectory, MAX_PATH);
szSystemDirectory[nCharactersWritten] = _T('\\');
szSystemDirectory[nCharactersWritten + 1] = _T('\0');
oder für zwei Schrägstriche:
TCHAR szSystemDirectory[MAX_PATH + 3]; // 1 for null terminator, 2 for the slashes
UINT nCharactersWritten = GetSystemDirectory(szSystemDirectory, MAX_PATH);
szSystemDirectory[nCharactersWritten] = _T('\\');
szSystemDirectory[nCharactersWritten + 1] = _T('\\');
szSystemDirectory[nCharactersWritten + 2] = _T('\0');
_stprint_f
ist in Visual Studio 2015 als veraltet erklärt worden, so dass, wenn Sie die Druckfunktionen verwenden möchten, können Sie versuchen:
TCHAR szSystemDirectory[MAX_PATH + 2]; // 1 for null terminator, 1 for the slash
UINT nCharactersWritten = GetSystemDirectory(szSystemDirectory, MAX_PATH);
_stprintf_s(szSystemDirectory + nCharactersWritten, MAX_PATH + 2 - nCharactersWritten, _T("%s"), _T("\\"));
oder für zwei Schrägstriche
TCHAR szSystemDirectory[MAX_PATH + 3]; // 1 for null terminator, 2 for the slashes
UINT nCharactersWritten = GetSystemDirectory(szSystemDirectory, MAX_PATH);
_stprintf_s(szSystemDirectory + nCharactersWritten, MAX_PATH + 3 - nCharactersWritten, _T("%s"), _T("\\\\"));
Warum nicht einfach eine String-Klasse verwenden? – PaulMcKenzie
[Du bist auf Escape-Zeichen gestoßen.] (Https://en.wikipedia.org/wiki/Escape_sequences_in_C) TLDR; '\' hat eine besondere Bedeutung. "\\" ist ein Schrägstrich. Wenn Sie zwei wollen, müssen Sie 4 verwenden: "\\\\" – user4581301
TCHAR ist kein echter Typ; Es ist ein #define, das abhängig davon, ob das UNICODE-Flag gesetzt ist, auf CHAR oder WCHAR gesetzt wird. Es gibt keinen wirklichen Grund, es mehr zu benutzen, und tatsächlich würde Ihr Code nicht funktionieren, wenn das UNICODE-Flag nicht gesetzt wäre, da Sie die '_T()' - und 'L'-Makros synonym verwenden. – MrEricSir