我创建一个线程并发送一个字符串作为参数。我需要随机调整字符串,但我在这里遇到问题char *c = buffer[rand() % len + 1]
。我收到了错误a value of type "char" cannot be used to initialize an entity of type "char *"
。为什么以及如何解决它?
DWORD WINAPI secondThread(LPVOID lpParam) {
char *buffer = (char*)lpParam;
size_t len = strlen(buffer);
char result[CHAR_MAX];
char *c = buffer[rand() % len + 1];
int i = 0;
while (i < len) {
strcat(result, c);
i++;
}
cout << result << endl;
return 0;
}
答案 0 :(得分:4)
您必须将地址分配给char *:
char *c = &buffer[rand() % len + 1]
^~~~~
你也应该初始化result
,因为当你使用strcat
时,你会追加到目标缓冲区,未初始化的result
可能不会以'\ 0'字符开头。这应该足够了:
char result[CHAR_MAX];
result[0] = '\0';
...但我强烈建议您将char result[CHAR_MAX];
切换为std::string result;
,将strcat(result, c);
切换为result += c;