Да, постоянное перераспределение - это привычка, от которой нужно быстро избавиться, прежде чем она станет слишком укоренившейся.

char *dumpTB (TB tb){

    char* text = malloc(sizeof(char));

    int i = 0; // 
    int x = 0; //string index

    tNode* curr = tb->head;

    while(curr != NULL){

        while(curr->line[x] != '\n'){
            printf("%d", i);
            text[i] = curr->line[x];
            printf("%c\n", text[i]);

            text = realloc(text, i+1);

            i++;
            x++;
        }
        text[i] = '\n';
        printf("%c", text[i]);
        text = realloc(text, i+1); 
        i++;

        x = 0; 
        curr = curr->next; 
    }

    return text;
}

образом, мне удается распечатать первые 12 букв моей строки, используя операторы print, но по какой-то причине это вызывает ошибку сегмента вскоре после печати 12-й буквы 'l', и на основании операторов print это, кажется, происходит вокруг realloc ... кто-нибудь может сказать мне, что я сделал не так?

int i = 1; // 
    int x = 0; //string index

    tNode* curr = tb->head;

    while(curr != NULL){

        while(curr->line[x] != '\n'){
            printf("%d", i-1);
            text[i-1] = curr->line[x];
            printf("%c\n", text[i-1]);

            text = realloc(text, i+1);
            i++;
            x++;
        }
        printf("%d\n", i-1);
        text[i-1] = '\n';
        printf("%c", text[i-1]);
        text = realloc(text, i+1); 
        i++;

        x = 0; 
        curr = curr->next; 
        //printf("%c\n", curr->line[0]);
    }

Я попытался исправить ошибки индекса, очень долго выглядевшее утверждение sysmalloc, которое прерывало программу.

Ответы на вопрос(1)

Ваш ответ на вопрос