編寫接收爲參數詞的程序。對於命令行中的每個單詞,它會創建一個線程來檢查單詞是否是迴文。如果單詞是迴文,它會增加一個全局變量(在線程中)。使用線程檢查命令行參數是否爲迴文詞
這就是我所做的: 它不起作用,因爲類型在函數迴文中不兼容。我能做什麼?我可以通過其他方式傳遞命令行參數嗎(不是使用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