簡體   English   中英

C在動態2D char數組中插入字符串or(char *),分段錯誤

[英]C insert a string or(char*) in a dynamic 2D char array, Segmentation fault

因此,我需要編寫一個需要從某些子進程中填充的二維char數組。 我不知道在運行時將返回多少行。

我制作了一個程序,該程序對於插入的前三個字符串(或char* )非常有效,但是之后出現了分段錯誤錯誤。 數組應保留其中的值/字符串。 這是代碼:

全局行數:

static int rows = 1;

數組初始化:

char **output = (char **)malloc(sizeof(char*) * 1);
output[0] = (char *)malloc(sizeof(char) * 1023);
output[0][0] = '#'; 

新增:

char foo[1023];
insertArray(output, "bbb");
insertArray(output, foo);
insertArray(output, "bbb");
insertArray(output, "bbb");

實際上前三遍效果很好

功能:

static void insertArray(char **c, char *itemToInsert) {

    if (c[0][0] == '#') {
        strncpy(c[0], itemToInsert, 1023);  
    }
    else {

        c = (char **)realloc(c, (rows + 1) * sizeof(char*));
        for (int i = 0; i < rows+1; i++) {
            c[i] = realloc(c[i],sizeof(char) * 1024);
        }
        strcpy(c[rows], itemToInsert);
        rows++;
    }

}

我只是不知道怎么了

您丟失了重新分配的結果,並且下次嘗試使用舊指針進行output

您可以像這樣重新設計:

output = insertArray(output, ...);
output = insertArray(output, ...);
output = insertArray(output, ...);
...

static char **insertArray(char **c, char const *itemToInsert)
{
    ...
    return c;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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