C 讀取檔案
讀取檔案
在上一章中,我們在 fopen()
函式中使用 w
和 a
模式寫入了檔案。
要從檔案中讀取內容,您可以使用 r
模式
示例
FILE *fptr;
// 以讀取模式開啟檔案
fptr = fopen("filename.txt", "r");
這會將 filename.txt
檔案開啟以供讀取。
在 C 語言中讀取檔案需要一些工作。請耐心點!我們將一步一步指導您。
接下來,我們需要建立一個足夠大的字串來儲存檔案的內容。
例如,我們建立一個可以儲存最多 100 個字元的字串
示例
FILE *fptr;
// 以讀取模式開啟檔案
fptr = fopen("filename.txt", "r");
// 儲存檔案內容
char myString[100];
為了讀取 filename.txt
的內容,我們可以使用 fgets()
函式。
fgets()
函式需要三個引數
示例
fgets(myString, 100, fptr);
- 第一個引數指定在哪裡儲存檔案內容,它將儲存在我們剛剛建立的
myString
陣列中。 - 第二個引數指定要讀取的最大資料量,它應該與
myString
的大小(100
)相匹配。 - 第三個引數需要一個檔案指標,用於讀取檔案(在我們的例子中是
fptr
)。
現在,我們可以列印字串,這將輸出檔案的內容
示例
FILE *fptr;
// 以讀取模式開啟檔案
fptr = fopen("filename.txt", "r");
// 儲存檔案內容
char myString[100];
// 讀取內容並將其儲存在 myString 中
fgets(myString, 100, fptr);
// 列印檔案內容
printf("%s", myString);
// 關閉檔案
fclose(fptr);
Hello World!
注意: fgets
函式只讀取檔案的第一行。如果您還記得,filename.txt
中有兩行文字。
要讀取檔案的每一行,您可以使用 while
迴圈
示例
FILE *fptr;
// 以讀取模式開啟檔案
fptr = fopen("filename.txt", "r");
// 儲存檔案內容
char myString[100];
// 讀取內容並列印
while(fgets(myString, 100, fptr)) {
printf("%s", myString);
}
// 關閉檔案
fclose(fptr);
Hello World!
Hi everybody!
良好實踐
如果您嘗試開啟一個不存在的檔案進行讀取,fopen()
函式將返回 NULL
。
提示: 作為良好的實踐,我們可以使用 if
語句來檢查 NULL
,並在檔案不存在時列印一些文字。
示例
FILE *fptr;
// 以讀取模式開啟檔案
fptr = fopen("loremipsum.txt", "r");
// 如果檔案不存在,則列印一些文字
if(fptr == NULL) {
printf("無法開啟檔案。");
}
// 關閉檔案
fclose(fptr);
如果檔案不存在,將列印以下文字
無法開啟檔案。
考慮到這一點,如果我們再次使用上面的“讀取檔案”示例,我們可以建立一個更具可持續性的程式碼。
示例
如果檔案存在,則讀取內容並列印。如果檔案不存在,則列印一條訊息。
FILE *fptr;
// 以讀取模式開啟檔案
fptr = fopen("filename.txt", "r");
// 儲存檔案內容
char myString[100];
// 如果檔案存在
if(fptr != NULL) {
// 讀取內容並列印
while(fgets(myString, 100, fptr)) {
printf("%s", myString);
}
// 如果檔案不存在
} else {
printf("無法開啟檔案。");
}
// 關閉檔案
fclose(fptr);
Hello World!
Hi everybody!