C 如何将元素从字符串数组传递到线程?

C 如何将元素从字符串数组传递到线程?,c,arrays,string,multithreading,C,Arrays,String,Multithreading,需要一些帮助来解决“将元素从字符串数组传递到线程”的问题。我的代码在这段文字之后。我在main函数中声明了一个字符串数组,然后将数组中的一个元素传递给线程。在线程中,我将其类型转换回char*type,然后打印,但它打印垃圾值。如能找到解决办法,我将不胜感激: #include <stdio.h> #include <pthread.h> void *agent(void *); int main(int argc, char *argv[]) { int i

需要一些帮助来解决“将元素从字符串数组传递到线程”的问题。我的代码在这段文字之后。我在
main
函数中声明了一个字符串数组,然后将数组中的一个元素传递给线程。在线程中,我将其类型转换回char*type,然后打印,但它打印垃圾值。如能找到解决办法,我将不胜感激:

#include <stdio.h>
#include <pthread.h>

void *agent(void *);

int main(int argc, char *argv[]) {
    int i;
    pthread_t agent_t[3];
    char *agent_colour[3] = {"Red","White","Brown"};

    for(i = 0 ; i <= 2 ; i++) {
        pthread_create(&agent_t[i], 0, agent, &agent_colour[i]);        
    }

    for(i = 0 ; i <= 2 ; i++) {
        pthread_join(agent_t[i], NULL);
    }

    return 0;
}

void *agent(void *arg) {
    char *colour = (char*)arg;
    int x;
    srand(time(NULL));
    x = rand() % 5 + 1;
    sleep(x);
    printf("\n My name is Agent %s\n", colour);
    pthread_exit(NULL);
}

这在
pthread\u create
调用中是错误的

&agent_colour[i]
你只想传递字符串

agent_colour[i]
试试这个:

pthread_create(&agent_t[i], 0, agent, agent_colour[i]); 

agent_color是指针数组。因此,只需像pthread create中的代理一样传递颜色[i]。

从和到
void*
的大量多余强制转换。此外,字符串文本应该声明为
const char*
,而不是
char*
pthread_create(&agent_t[i], 0, agent, agent_colour[i]);