Да, постоянное перераспределение - это привычка, от которой нужно быстро избавиться, прежде чем она станет слишком укоренившейся.
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, которое прерывало программу.