簡體   English   中英

在C中獲取文件光標位置

[英]get file cursor position in C

我正在用fgetc讀取一個文件,所以每次讀取一個字符時,光標positio都會被更改。

在每次讀取后,是否可以在列和行號方面知道光標在文件上的“坐標”?

謝謝

你可以使用ftell

它不會在行和列方面給出位置,而是從一開始就給出流中的當前位置。

文件中沒有“坐標”,只有一個位置。 文本文件只是一個字節流,行由換行符分隔。 因此,在讀取文本文件時,如果掃描整個文件,則可以計算“坐標”。 這意味着,如果您確實需要一些“行”和“列”值:

  • 逐行讀取文件。 計算換行符,然后得到“行”號。 請注意,不同的操作系統上有不同的換行符 - unix行結尾與Windows不同。
  • 逐個字符地閱讀有問題的行,並將字符計數到相關位置。 這將為您提供“列”編號。 您顯然需要接受“列”的數量可以在“行”之間變化,並且完全可以使“行”的“列數”為0。

一種不同的方法是

  • 逐行讀取文件並構建換行符的位置數組(使用ftell )。
  • 現在想一下任何角色的位置只是在文件中找到它的位置,然后找到最近的前一個換行符。 從換行計數到你得到“行”的字符,從換行位置和當前位置之間的差異得到“列”。

但最重要的是接受文件中沒有行或列 - 文件中有一個位置,但文件本身只是一個字節流。 這也意味着您需要以不同方式處理用寬字符集編碼的文件,因為字符不再映射到字節。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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