-2
我想輸入字符串列表。該列表可能會有所不同,所以我嘗試使用動態分配。每個字符串最多20個字符。該列表以一個點結束。我一直在努力一段時間,但我一直在分段錯誤,我不知道爲什麼。我想這個錯誤是在我使用realloc/malloc,但我不明白我到底做錯了什麼。代碼塊是一個更大的程序的一部分,但我挑出這個塊,並試圖使其工作。它適用於一個單詞後跟一個點的「列表」。只要我嘗試閱讀兩個或更多字符串的列表,就會看到分段錯誤。 任何幫助將是偉大的,謝謝!輸入使用動態分配的字符串列表c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char **resizeDynamicArray(char **arr, int newSize){
char **ptr = realloc(arr, newSize*sizeof(char*));
if (ptr==NULL) {
printf("Error: memory allocation failed.\n");
exit(-1);
}
return ptr;
}
int input (char ***seq){
int len = 0;
char string[21];
*seq=NULL;
do{
scanf("%s", string);
if (string[0] != '.'){
*seq = resizeDynamicArray(*seq, (len+1));
*seq[len] = malloc(sizeof(char[21]));
strcpy((*seq)[len], string);
len++;
}
} while (string[0] != '.');
return len;
}
int main(int argc, char *argv[]) {
int length;
char **words;
length = input(&words);
for (int i=0; i<length; ++i){
printf("%s\n", words[i]);
}
for (int i=0; i<length; ++i){
free(words[i]);
}
free(words);
return 0;
}
一個三星級程序員應該能夠調試自己的程序。 – EOF
查看['gdb'](http://www.gnu.org/software/gdb/documentation/) –
對所有EOF沒有幫助。我遠離「三星級程序員」。我是新來的編碼和atm課程。謝謝帕特里克,我已經解決了。無論如何,我會看看它。 – Matt