Я хочу объединить случайную строку с именем каталога, и конечный результат должен быть примерно таким:
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);
str
являетсяchar
не строкой илиchar
массивом. - person SHR   schedule 28.01.2019char
? - person Some programmer dude   schedule 28.01.2019"%s"
ожидает указатель на первый символ массива символов, вы передаете единственную переменнуюchar
. И поскольку вы используетеwsprintf
, строки должны быть широкими символами. В общем, много неопределенного поведения в очень небольшом коде. - person Some programmer dude   schedule 28.01.2019char str[X]; gen_r(str, sizeof(str));
- как есть, нужно было бы сделатьgen_r(str, sizeof(str) - 1)
... - person Aconcagua   schedule 28.01.2019