[英]C - Dynamic array of struct error
我正在嘗試實現多線程C程序,但遇到了麻煩。 我有一個結構,其中包含一個char數組和一個指向另一個結構的指針(我正在嘗試將該指針用作buffer_item的數組:
typedef struct{
char** buffer;
} buffer_item;
typedef struct{
buffer_item* buffers;
char file_name[255];
}buffer_holder;
當我嘗試創建buffer_item S和把它們放到buffer_holder的緩沖器陣列,海灣合作委員會給了我下面的錯誤:
for(i = 0; i < n_value; i++){
buffer_holder *holder = (buffer_holder*) malloc(sizeof(buffer_holder));
int l;
for(l = 0; l < r_value; l++){
buffer_item *new_item = (buffer_item *)malloc(sizeof(buffer_item));
new_item->buffer = malloc(buffer_size * sizeof(char*));
int j;
for (j = 0; j < buffer_size; j++)
new_item->buffer[j] = malloc((MAX_WORD+1) * sizeof(char));
holder -> buffers[l] = new_item;
}
strcpy(holder -> file_name, argv[i+3]);
if(pthread_create(&mapper_threads[i], NULL, mapper, (void*) holder)) {
fprintf(stderr, "Error creating thread\n");
return 1;
}
}
wcountb2.c:187:28:錯誤:從類型'struct buffer_item *'持有人分配給類型'buffer_item'時,類型不兼容-> buffers [l] = new_item;
我一直在嘗試解決它,但找不到任何東西。 任何幫助將不勝感激。 謝謝你們。
holder->buffers
是指向struct buffer_item
的指針,但是在賦值holder->buffers[l] = new_item
您將其視為指針數組。
要解決它,只需更改holder->buffers[l] = new_item;
進入holder->buffers = new_item;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.