2014-10-31 93 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);  
    } 
}