将argv[1]作为参数传递给pthread_create。
我正在尝试创建一个线程,该线程采用字符串形式将argv[1]作为参数传递给pthread_create。,c,pthreads,void-pointers,arrays,C,Pthreads,Void Pointers,Arrays,我正在尝试创建一个线程,该线程采用字符串形式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
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]
,使其行为像一个字符数组,我们将不胜感激 请记住,&argv[1]
是一个char*[]
,即指向字符的指针数组。将其强制转换为char*
,即指向字符的指针不正确
尝试:
请记住,
&argv[1]
是一个char*[]
,即指向字符的指针数组。将其强制转换为char*
,即指向字符的指针不正确
尝试:
&argv[1]
是字符*
的地址,而不是字符*
。只需传递'argv[1]&argv[1]
是char*
的地址,而不是char*
。谢谢你的建议,但这并没有解决我的问题。我得到一个编译器的保证,声明它是从整数生成指针,而不是强制转换。当我运行这个程序时,我得到了一个分段错误11。我的主方法中有一个不同的错误导致了这个错误。你的建议有帮助。谢谢很抱歉跟进缓慢,很高兴现在一切正常!很乐意帮忙!谢谢你的建议,但这并没有解决我的问题。我得到一个编译器的保证,声明它是从整数生成指针,而不是强制转换。当我运行这个程序时,我得到了一个分段错误11。我的主方法中有一个不同的错误导致了这个错误。你的建议有帮助。谢谢很抱歉跟进缓慢,很高兴现在一切正常!很乐意帮忙!
pthread_create(&thread1, NULL, getMax, argv[1]);