如何将 char 与 TCHAR 数组连接起来?
How concatenate a char with TCHAR array?
我想将一个随机字符串与目录名称连接起来,最终结果必须是这样的:
C:\Program Files (x86)\AAAFFF1334
在下面的代码中这部分:“AAAFFF1334”出现奇怪的字符见:
必须采取什么措施来解决这个问题?
TCHAR mydir[MAX_PATH];
void gen_random(char *s, const int len) {
static const char alphanum[] =
"0123456789"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"abcdefghijklmnopqrstuvwxyz";
for (int i = 0; i < len; ++i) {
s[i] = alphanum[rand() % (sizeof(alphanum)-1)];
}
s[len] = 0;
}
// main
TCHAR szProgramFiles[MAX_PATH];
HRESULT hProgramFiles = SHGetFolderPath(NULL, CSIDL_PROGRAM_FILES, NULL, SHGFP_TYPE_CURRENT, szProgramFiles);
char str;
gen_random(&str, 10);
wsprintf(mydir, TEXT("%s\%s"), szProgramFiles, str);
gen_random
应该得到至少包含 11 个字符的 char 数组(10 表示大小 + 1 表示终止 null)。
所以应该是:
char str[10+1]; //or char str[11];
gen_random(str, 10);
此外,格式字符串应该是:"%s\%hs"
,第一个是TCHAR*
类型(如果UNICODE定义wchar_t*
如果没有char*
)第二个总是char*
类型。
hs, hS
String. This value is always interpreted as type LPSTR, even
when the calling application defines Unicode.
注意:在 Microsoft 文档中:
LPSTR
= 总是 char*
LPWSTR
= 总是 wchar_t*
LPTSTR
= TCHAR*
(如果定义了 UNICODE:wchar_t*
,否则:char*
)
我想将一个随机字符串与目录名称连接起来,最终结果必须是这样的:
C:\Program Files (x86)\AAAFFF1334
在下面的代码中这部分:“AAAFFF1334”出现奇怪的字符见:
必须采取什么措施来解决这个问题?
TCHAR mydir[MAX_PATH];
void gen_random(char *s, const int len) {
static const char alphanum[] =
"0123456789"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"abcdefghijklmnopqrstuvwxyz";
for (int i = 0; i < len; ++i) {
s[i] = alphanum[rand() % (sizeof(alphanum)-1)];
}
s[len] = 0;
}
// main
TCHAR szProgramFiles[MAX_PATH];
HRESULT hProgramFiles = SHGetFolderPath(NULL, CSIDL_PROGRAM_FILES, NULL, SHGFP_TYPE_CURRENT, szProgramFiles);
char str;
gen_random(&str, 10);
wsprintf(mydir, TEXT("%s\%s"), szProgramFiles, str);
gen_random
应该得到至少包含 11 个字符的 char 数组(10 表示大小 + 1 表示终止 null)。
所以应该是:
char str[10+1]; //or char str[11];
gen_random(str, 10);
此外,格式字符串应该是:"%s\%hs"
,第一个是TCHAR*
类型(如果UNICODE定义wchar_t*
如果没有char*
)第二个总是char*
类型。
hs, hS
String. This value is always interpreted as type LPSTR, even when the calling application defines Unicode.
注意:在 Microsoft 文档中:
LPSTR
= 总是char*
LPWSTR
= 总是wchar_t*
LPTSTR
=TCHAR*
(如果定义了 UNICODE:wchar_t*
,否则:char*
)