如何在文件中查找字符串并获取其行号

时间:2010-08-19 16:50:44

标签: c

美好的一天,

我需要你帮助解决这个问题,我现在无法弄清楚如何解决这个问题。 我有一个文件,其中包含以下格式的日期 03 \ 03 \ 2010

04 \ 03 \ 2010

05 \ 03 \ 2010

06 \ 03 \ 2010

07 \ 03 \ 2010

08 \ 03 \ 2010

09 \ 03 \ 2010

10 \ 03 \ 2010
。 。 。
。 。 。
。 。 。
我想从文件中获取任何指定日期字符串的行号。 那就是如果我想得到09 \ 03 \ 2010的行号,我怎么能实现这一点。

3 个答案:

答案 0 :(得分:2)

一次读取一行文件(例如,使用fgets),计算迭代次数,直至找到匹配的行。

#define max_len 256

char line[max_len];
int current_line = 0;

while (fgets(file, line, sizeof(line))) {
    ++current_line;
    if (0 == strcmp(line, target))
        return current_line;
}

答案 1 :(得分:0)

在按顺序解析文本文件时,每次遇到\n字符时都会递增计数器。这将是您的基于0的行号计数器。

答案 2 :(得分:0)

除非您正在为家庭作业或运动做这件事,否则请使用现有工具。在Unix上,在这种情况下,这将是fgrep

如果必须重新实现,请编写状态机代码,递增行计数器以响应读取换行符导致的状态转换。