【发布时间】:2019-02-20 22:02:38
【问题描述】:
我正在尝试传递一个字符串数组和索引,从哪里开始在数组中结束搜索,我无法从过去两天解决它。我正在向 pthread_create 发送一个结构数据 thread_data,在这里我可以发送 int 和 long 数据,但不能发送字符串数组,有人可以帮助我,如何传递这些。
struct data{
int tid;
unsigned long start;
unsigned long end;
char * word;
char * str;
};
struct data thread_data[NUM_THREADS];
void *searchString(void *passeddata)
{
struct data *t_data;
int tid1;
char * str[3];
t_data=(struct data *) passeddata;
tid1=t_data->tid;
str=t_data->str;
.....
pthread_exit(NULL);
}
int main(int argc, char *argv[])
{
...
char work[]={"First Line","Second line","Third line"};
...
while(fgets(arr[index],120, fp)!=NULL){
index=index+1;
thread_data[index].tid=index;
thread_data[index].str=work;
...
rc=pthread_create(&threads[index],NULL,searchString,(void *)&thread_data[index]);
...
}
pthread_exit(NULL);
}
【问题讨论】:
-
这一行
char work[]={"First Line","Second line","Third line"};你需要二维数组。 -
@kiranBiradar 我已经改变了它,仍然面临这个问题。我在结构中为字符串数组 char * str 声明做对了吗?并传递字符串数组 thread_data[index].str=work;到 pthread_create 或者我有没有改变它。
-
No t_data->str 应该是 char *arr[3] 类型
-
@kiranBiradar 我必须根据文件中的行数计算所需的大小。所以,我没有在结构中添加该大小的大小。你的意思是在结构中声明为 char * str[] 吗?
-
在这种情况下使用指针指向指针并动态分配内存。
标签: c multithreading struct pthreads