은 "두 개의 슬래시"일이 당신이에서 볼 뭔가가 아닌 경우 확실하지 않음 디버거 (하나의 슬래시가 이스케이프 된 것으로 표시되므로) - 가장 큰 문제는 의 내용을 _stprintf
호출로 덮어 쓰는 것입니다. 당신이 원하는 것은 \
문자를 경로 끝에 인쇄하는 것이 었습니다. 시도
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');
또는 두 개의 슬래시 : 당신이 인쇄 기능을 사용하려면 당신이 시도 할 수 있도록
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
이, 비주얼 스튜디오 2015에서 사용되지 않는 선언되었습니다
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("\\"));
또는 두 개의 슬래시에 대해서
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("\\\\"));
그냥 문자열 클래스를 사용하지 않는 이유는 무엇입니까? – PaulMcKenzie
[이스케이프 문자를 사용했습니다.] (https://en.wikipedia.org/wiki/Escape_sequences_in_C) TLDR; '\'는 특별한 의미가 있습니다. "\\"는 하나의 슬래시입니다. 두 개를 원할 경우 4를 사용해야합니다. "\\\\" – user4581301
TCHAR은 실제 유형이 아닙니다. UNICODE 플래그가 설정되어 있는지 여부에 따라 CHAR 또는 WCHAR로 설정되는 #define입니다. '_T()'와'L' 매크로를 서로 바꾸어 사용할 수 있기 때문에 UNICODE 플래그가 설정되어 있지 않으면 코드를 사용할 수 없습니다. – MrEricSir