gpt4 book ai didi

linux - 如何将 C 字符串数组传递给线程 (pthreads)

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:26:05 25 4
gpt4 key购买 nike

这是我目前所拥有的,当我编译它时我得到这个错误:lb54.c:在函数“funct1”中:lb54.c:38:2: 警告:格式“%s”需要类型为“char *”的参数,但参数 2 的类型为“int”[-Wformat=] printf("%s\n",姓名[i]); ^

当我将 %s 更改为 %d 时它起作用了,但它显示了一些随机数

#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <string.h>

void * funct1(void* arg);
void * funct2(void* arg);

void main(){

char name[10][20];
int *id = (int*)malloc(sizeof(int)*10);

int i,x=5;

for(i=0;i<10;i++){
strcpy(name[i],"name");
id[i] = i;
}

pthread_t threadid;
pthread_t threadname;


pthread_create(&threadid,NULL,funct2,(void *)id);
pthread_create(&threadname,NULL,funct1, &name);
sleep(5);
free(id);
printf("parent thread exiting\n");

}

void * funct1(void* arg){
int i;
char *name = (char *)arg;
for(i=0;i<10;i++){
printf("%s\n",name[i]);
}
}

void * funct2(void* arg){
int i;
int *id = (int *) arg;
for(i=0;i<10;i++){
printf("%d\n",id[i]);
}
}

最佳答案

您已在 funct1 中声明变量 name 的类型为 char *。当您使用 [i] 访问它时,它只变成一个字符,因此它不适用于 %s。

如果您确定 name 变量是一个字符串数组,请将其声明为 char **namechar *name[]

关于linux - 如何将 C 字符串数组传递给线程 (pthreads),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34878195/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com