我正在參加我的第一個C編程課程,並且遇到了一個嘗試編寫一次讀取文本文件的函數的問題。這裏是我的代碼:發送一個函數的字符串指針
#define LINELENGTH 81
int getLine(char* line, FILE* file) {
if (line == NULL) {
line = malloc(sizeof(char) * LINELENGTH);
}
fgets(line, LINELENGTH, file);
int length = strcspn(line, "\n");
if (line[length] == '\n') {
line[length] = '\0';
line = realloc(line, sizeof(char) * (length + 1));
return length;
} else {
char* addThis = NULL;
int addedLength = getLine(addThis, file);
length += addedLength;
line = realloc(line, sizeof(char) * length);
strcat(line, addThis);
free(addThis);
addThis = NULL;
return length;
}
}
int main() {
FILE *text = fopen("test.txt", "r");
char* line = NULL;
getLine(line, text);
printf("The first line is \"%s\"", line);
fclose(text);
free(line);
return 0;
}
我的測試輸入文件現在只包含一個單一的線,「測試」
當我運行該程序,我得到「第一行是‘(空)’」。不是我所希望的。當我通過調試器中的函數時,getLine中的所有內容似乎都可以正常工作。但是,當函數返回我剩下的所有東西都是null的時候。
任何幫助表示讚賞。謝謝。
感謝您的快速響應。我還沒有處理指向指針的指針,我發現它有點混亂。我正在尋找一些代碼示例... – jobrien929
@ jobrien929:我添加了更多的信息,可能(或可能不會)幫助清理我想說的話。 –
它絕對做到了。我剛剛得到它的工作。謝謝您的幫助。 – jobrien929