我正在尝试创建一个采用argv[1]
字符串的线程并将其传递给我的函数。这是我试图传递它的代码。
if(pthread_create(&thread1, NULL, getMax, &argv[1]) != 0){
printf("ERROR createing the thread\n");
return 1;
}
这是我在pthread_create函数中调用的函数。
void * getMax(void * f){
char * fileName = (char*)f;
printf("%s\n\n",fileName);
}
我相信我的问题是当我将它转换回字符指针时。 printf
函数打印出几个随机字符。如果我调用函数传递一个字符串就行了。
pthread_create(&thread1, NULL, getMax, "This Works");
如果有人可以解释如何强制转换argv[1]
,那么它的行为就像一个非常受欢迎的字符数组。
答案 0 :(得分:6)
请记住,&argv[1]
是char*[]
,即指向字符的指针数组。将其转换为char *
,即指向字符的指针不正确。
尝试:
pthread_create(&thread1, NULL, getMax, argv[1]);