簡體   English   中英

C-結構錯誤的動態數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM