我所做的只是在c(char * )中啓動一個雙指針來保存我的字符串數組。我將這個變量(char * array_strings)傳遞給另一個函數,該函數應該打開一個文件並創建一個表示文件每一行的字符串數組,但由於某種原因,當我從函數返回變量array_strings爲null時。未指定的指針
int main(void) {
char **array_strings;
char *book_file = "book.txt";
delimitByNewline(book_file, array_strings);
return 1;
}
//delimit file
void delimitByNewline(char *book, char **array) {
int count = 0;
int i = 0;
char c;
int size = fileLines(book);
srand(time(NULL));
char **ret_array = (char **)malloc(sizeof(char *) * size);
FILE *bk = fopen(book, "rt");
if(!bk) {
perror("fp");
exit(1);
}
char *line = (char *)malloc(sizeof(char)*60);
while ((c = fgetc(bk)) != EOF) {
line[i] = c;
i++;
if(c == '\n') {
ret_array[count] = line;
line = (char *)malloc(sizeof(char) * i);
count++;
i = 0;
}
}
fclose(bk);
array = ret_array;
free(line);
free(ret_array);
}
「開始」是你在學校廁所對新生做的事情。 「初始化」是你對C中變量的處理。 –
請注意,函數末尾的'free(ret_array)'會刪除你嘗試返回的數據。 – Machtl
初始評論是非常有用的....謝謝。無論如何,是的,甚至在我添加空閒之前,數組的值仍然爲空。但是我會重新編譯它以確保 –