-1
在動態創建數組 時,似乎一切正常,但在嘗試向後打印時核心轉儲。 它設法只打印最後一個字符串,然後分段錯誤。分配動態二維數組
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
void init_array(void ***pt, int *ptlen) {
*pt=NULL;
*ptlen=0;
}
void trim_array(void ***pt, int *ptlen, int len) {
*pt=(void**)realloc(*pt, len*sizeof(void*));
*ptlen=len;
}
void write_array(void ***pt, int *ptlen, int pos, void *v) {
if (pos >= *ptlen)
trim_array(pt, ptlen, pos+1);
*pt[pos]=v;
}
void *read_array(void ***pt, int *ptlen, int pos) {
return(*pt[pos]);
}
void destroy_array(void ***pt, int *ptlen) {
trim_array(pt, ptlen, 0);
*pt=NULL;
}
int main(int argc, char *argv[]) {
void **t;
int tlen;
void ***pt = &t;
int *ptlen = &tlen;
char s[256],*p; int i;
init_array(pt, ptlen);
i = 0;
do {
printf("give name:\n");
scanf("%255s",s);
write_array(pt, ptlen, i, (void*)strdup(s));
i++;
} while (strcmp(s,"end"));
for (--i; i>=0; i--) {
p = (char*)read_array(pt, ptlen, i);
printf("%s\n",p);
free(p);
}
destroy_array(pt, ptlen);
return(0);
}
哦,那是不幸的。也許我們可以幫忙。請解釋你已經完成了哪些調試,這樣我們就不會浪費時間在同一個地方。哪條線段被分割,索引值等等。 –
1.在調用write_array之後立即打印動態條目,顯示所有內容都「正常工作」 2.試圖打印整個數組(最後一個for循環)導致分段錯誤 - 只打印最後一個條目.. – user3605146
您可以至少提供你正在使用的輸入?爲什麼要讓自己的方式讓大家猜測? –