gpt4 book ai didi

c++ - 如何将 char 与 TCHAR 数组连接起来?

转载 作者:行者123 更新时间:2023-11-27 23:41:32 24 4
gpt4 key购买 nike

我想将一个随机字符串与目录名称连接起来,最终结果必须是这样的:

C:\Program Files (x86)\AAAFFF1334

在下面的代码中,这部分:“AAAFFF1334”出现了奇怪的字符,请参见:

enter image description here

必须采取什么措施来解决这个问题?

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.

look here

注意:在 Microsoft 文档中:

  • LPSTR = 总是 char*
  • LPWSTR = 始终 wchar_t*
  • LPTSTR = TCHAR*(如果定义了 UNICODE:wchar_t*,否则:char*)<

关于c++ - 如何将 char 与 TCHAR 数组连接起来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54403910/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com