char的值不能用于初始化char*的实体
Value of char cannot be used to initialize an entity of char *
我创建了一个线程,并将字符串作为参数发送。我需要随机打乱字符串,但这里有一个问题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;
}
您必须获取一个地址才能分配给char*:
char *c = &buffer[rand() % len + 1]
^~~~~
此外,您应该零初始化result
,因为当您使用strcat
时,您将附加到目标缓冲区,而未初始化的result
可能不会以"\0"字符开头。这就足够了:
char result[CHAR_MAX];
result[0] = ' ';
但我强烈建议您将char result[CHAR_MAX];
切换到std::string result;
,将strcat(result, c);
切换到result += c;