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]);