Это то, что у меня есть до сих пор, когда я его компилирую, я получаю эту ошибку: lb54.c: В функции 'funct1': lb54.c: 38: 2: предупреждение: формат «% s» ожидает аргумент типа «char *», но аргумент 2 имеет тип «int» [-Wformat =] printf («% s \ n», name [i]); ^Как передать массив строк C в поток (pthreads)
при изменении% 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]);
}
}