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

C 如何在文件中查找字符串并获取其行号,c,C,大家好 在这个问题上我需要你们的帮助,我现在不知道怎么解决这个问题。 我有一个包含日期的文件,格式如下。 2010年3月3日 2010年3月4日 2010年3月5日 2010年3月6日 2010年3月7日 2010年3月8日 2010年3月9日 2010年3月10日 . . . . . . . . . 我想从文件中获取任何指定日期字符串的行号。 也就是说,如果我想获得09\03\2010的行号,我该如何实现这一点。当您按顺序解析文本文件时,每次遇到\n字符时,都要增加一个计数器。这将是您基于0的

大家好

在这个问题上我需要你们的帮助,我现在不知道怎么解决这个问题。 我有一个包含日期的文件,格式如下。
2010年3月3日

2010年3月4日

2010年3月5日

2010年3月6日

2010年3月7日

2010年3月8日

2010年3月9日

2010年3月10日
. . .
. . .
. . .
我想从文件中获取任何指定日期字符串的行号。
也就是说,如果我想获得09\03\2010的行号,我该如何实现这一点。

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

除非您是为了家庭作业或运动而这样做,否则请使用现有的工具。在Unix上,在本例中是
fgrep


如果必须重新实现,请对状态机进行编码,增加行计数器以响应读取换行引起的状态转换。

一次读取一行文件(例如,使用
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;
}

grep-n pattern file.txt|sed-e's/\([0-9]\).*:*/\1/g'