用户传入输入,此输入存储在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);
}
答案 0 :(得分:3)
buffer
已经是一个指针。当你这样做时你给线程一个指向指针的指针,然后你把它作为函数中的指针处理:
pthread_create(&thread, NULL, printFiles, (void *)&buffer);
只需将指针传递给线程:
pthread_create(&thread, NULL, printFiles, (void *)buffer);