FILE *fp = fopen("story.txt", "r");
if(fp == NULL){
printf("\nError opening file.\nExiting program.\n");
exit(1);
}
char text[100];
while(fgets(text, 100, fp) != NULL){
printf("%s", text);
}
printf("\n");
fclose(fp);
我試圖打印文本文件的前100個字符,包括新行,但是當我使用上面的代碼時,它呈現出一些奇怪的行爲。首先,它只打印文本文件的最後一行,它本身不超過100個字符。另外,如果我包括在while循環即使用fgets從.txt文件讀取並打印多行
while(fgets(text, 100, fp) != NULL){
printf("%s", text);
printf("%s", text);
}兩個打印語句
它打印比文本文件(某處十萬,這是一個很大的文本文件)的125個字符多了不少,並且所述文本的內容是來自文件中的一串看似隨機的片斷,不會有新的行或任何東西。
所以我想我的問題是有沒有辦法使用fgets,以便從頂部開始打印文件中的文本,幷包含新行?我最終必須使用它來將文本文件轉換爲字符數組,以便可以基於該數組創建一個新的,修改過的字符數組,並將其打印到新的文本文件中。所以如果有更好的方法來實現這個最終目標,那將是值得讚賞的。
編輯:經過一些討論後,我意識到我正在使用的文本只是一個帶有回車符和沒有換行符的文本大塊。我猜在這一點上我的主要問題是如何將這個文本文件與回車轉換爲字符數組。
文本文件中的行多長時間? –
我懷疑你的線條比100個字符長得多,所以在大多數情況下'text'中沒有換行符。你可以在調用printf()後添加'fflush(stdout);'。 –
似乎線條少於100個字符,並且正在打印的這些線段的長度小於100個字符。目前所有的輸出都有很多奇怪的行爲。例如,當我包含兩個prinf語句並將終端的大小調整爲似乎超過100個結果的範圍時,僅打印出文本文件的最後一行,還有一些額外的看似隨機的單詞,文本。但是,當終端調整到更小的尺寸時,它會打印出更多的文本。當只使用一個printf語句時會發生類似的情況 –