[英]How can i read a specific char inside a file?
這足以讀取fp
的第一個字符'a'
file.txt
abcdef
// readchar.c
FILE *fp = fopen("file.txt", "r");
int c = fgetc(fp);
但是我如何閱讀(例如)第三個字符?
文本文件是一種順序文件。 要閱讀特定項目,您必須閱讀文件中它之前的所有內容。
操作系統允許您通過移動所謂的文件指針在任何地方讀取文件。 可以通過查找文件來更改文件中發生讀取的位置。 有幾種方法可以處理文件 I/O。 你發現調用一個fopen
打開文件,並得到一個文件指針, fgetc
讀取下一個字符所在的文件指針指向和一個字符推進它。 你有fgets
來閱讀完整的一行。 fseek
到其他地方的更多文件指針。 fclose
關閉文件。 和其他類似的功能。
回到文本文件。 假設我們有一個文件包含: 兩行包含:
Hello world,
Programming rocks!
如果您想讀取第一行的第 5 個字符,這很簡單:只需使用fseek
將文件指針定位到文件中的第 5 個位置(第一個字符在位置零處)。 然后用fgetc
讀取它。
現在,如果您需要讀取第二行的第 5 個字符,無論第一行是什么,都不能使用fseek
因為不先讀取該行就無法知道第一行的長度。
要讀取第 M 行的第 N 個字符,您必須讀取 M 行,丟棄除最后一行之外的數據(您只需將 for/loop 中的所有行讀入同一個緩沖區)。 然后訪問緩沖區中您剛剛讀取最后一行的第 N 個字符。 將該緩沖區設為字符數組,您就可以直接訪問第 N 個字符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.