2014-10-31 56 views
1

我正在讀取文件,並且想要將行號存儲在特定條件下。獲取文件的行號

我知道fgets用於讀取該行,有沒有什麼方法可以存儲/獲取光標所在的行號。

+1

你是什麼意思*光標*?如果它是文件指針,當用'fgets()'讀取時使用行計數器就足夠了? – 2014-10-31 16:00:39

+0

假設,'如果(strncmp(ioarea,「ABC」,3)== 0)'在這種情況下我想存儲行號。計數器給我在一個文件中的「ABC」的計數,但不是每個fgets()的「ABC」 – Aravind 2014-10-31 16:05:28

+0

的行號增加一個計數器(從0開始),然後檢查條件。如果條件成立,則保存行號。 – user3629249 2014-11-01 05:06:32

回答

4

在標準文件流的上下文中沒有光標。有一個文件指針,但不是一個遊標。光標是控制檯/終端驅動程序的概念。即使使用文件指針,通常也不會在線路模式下使用它們,它們用於隨機訪問/二進制類型訪問。您可以在文本模式下查找文件的開頭和結尾。但是fseek不是「線或光標」,所以不要使用它。

您只需跟蹤您用整數讀取的行數。

int line = 0; 
while((fgets(...)) != NULL) { 
    line++; 
    ... 
    if(...) { 
     // store line number wherever you need it 
     printf("found at line %d\n", line);  
    } 
}