编写接收为参数词的程序。对于命令行中的每个单词,它会创建一个线程来检查单词是否是回文。如果单词是回文,它会增加一个全局变量(在线程中)。使用线程检查命令行参数是否为回文词
这就是我所做的: 它不起作用,因为类型在函数回文中不兼容。我能做什么?我可以通过其他方式传递命令行参数吗(不是使用myStruct)?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <pthread.h>
int var_global = 0;
pthread_mutex_t mtx;
typedef struct{
char* word;
}myStruct;
int palindrome(myStruct aux){
int k = strlen(aux);
int i;
for (i=0; i<k/2; i++) {
if(aux[i] != aux[k-i])
return 0;
}
return 1;
}
void* f(void* w){
myStruct aux;
aux=*(myStruct*)w;
if (palindrom(aux)==1){
pthread_mutex_lock(&mtx);
var_global++;
pthread_mutex_unlock(&mtx);
}
}
int main(int argc, char *argv[]){
int i;
pthread_t threads[argc];
pthread_mutex_init(&mtx, NULL);
myStruct s[argc];
for (i=1;i<argc;i++){
s[i].word = argv[i];
pthread_create(&threads[i], NULL, f, &s[i]);
}
for (i =1; i<argc; ++i)
pthread_join(threads[i], NULL);
printf("the global variable has the value: %d \n", var_global);
pthread_mutex_destroy(&mtx);
return 0;
}
你有没有为你使用的字符串分配内存? ('s [i] .word = argv [i];')其中'char * word;'是struct myStruct的成员 – ryyker