-1
我创建一个线程并发送一个字符串作为参数。我需要随机洗牌,但我在这里遇到问题char *c = buffer[rand() % len + 1]
。我有一个错误a value of type "char" cannot be used to initialize an entity of type "char *"
。为什么以及如何解决它?char的值不能用来初始化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_MAX]'和'字符*结果=新的char [len + 1];'除非你知道你永远不会得到一个字符串中含有超过'CHAR_MAX'的字符。 – NathanOliver
你的'char *'应该也是'const char *'。你不打算写入'buffer'或'c',所以你不妨写文档意图。并让编译器帮助您尽早发现错误。另外,除非'len'是0或1,否则你正在写'result'结尾。 – IInspectable