char的值不能用于初始化char *的实体

时间:2016-04-07 17:43:15

标签: c++

我创建一个线程并发送一个字符串作为参数。我需要随机调整字符串,但我在这里遇到问题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;
}

1 个答案:

答案 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;