Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将argv[1]作为参数传递给pthread_create。_C_Pthreads_Void Pointers_Arrays - Fatal编程技术网

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