C-Linux-创建线程并传入缓冲区

C-Linux-创建线程并传入缓冲区,c,linux,pthreads,C,Linux,Pthreads,用户传入输入,此输入存储在argv[2]中。我将该值存储到缓冲区中,然后尝试通过pthread_create函数将该值传递给另一个函数。但是,这会扭曲缓冲区的值 我传入输入,可能类似于“Hello”,然后当它在“printFiles”函数中被打印时,它就乱七八糟了。我该如何解决这个问题 void *printFiles(void *file); int main(int argc, char **argv) { pthread_t thread; char *store =

用户传入输入,此输入存储在argv[2]中。我将该值存储到缓冲区中,然后尝试通过pthread_create函数将该值传递给另一个函数。但是,这会扭曲缓冲区的值

我传入输入,可能类似于“Hello”,然后当它在“printFiles”函数中被打印时,它就乱七八糟了。我该如何解决这个问题

void *printFiles(void *file);

int main(int argc, char **argv)

{
    pthread_t thread;

    char *store = argv[2];

   char *buffer = (malloc(500)); 

   strcpy(buffer, store);

    pthread_create(&thread, NULL, printFiles, (void *)&buffer);
    pthread_join(&thread, NULL);
return 0;


}

void *printFiles(void *file)
{
    printf("%s\n", file);

}

缓冲区
已经是指针。执行此操作时,为线程提供指向指针的指针,然后将其作为函数中的指针进行处理:

pthread_create(&thread, NULL, printFiles, (void *)&buffer);
只需将指针传递到线程:

pthread_create(&thread, NULL, printFiles, (void *)buffer);

缓冲区
已经是指针。执行此操作时,为线程提供指向指针的指针,然后将其作为函数中的指针进行处理:

pthread_create(&thread, NULL, printFiles, (void *)&buffer);
只需将指针传递到线程:

pthread_create(&thread, NULL, printFiles, (void *)buffer);

如果
pthread\u create()
的原型可见,则可以完全删除强制转换。如果
pthread\u create()
的原型可见,则可以完全删除强制转换。