美好的一天,
我需要你帮助解决这个问题,我现在无法弄清楚如何解决这个问题。 我有一个文件,其中包含以下格式的日期 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的行号,我怎么能实现这一点。
答案 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
。
如果必须重新实现,请编写状态机代码,递增行计数器以响应读取换行符导致的状态转换。