-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