簡體   English   中英

如何讀取文件中的特定字符?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM