0

我正在寻找逻辑和代码来读取文件并打印两个匹配的模式之间的行。两种模式可以在一行中,也可以在下一个连续行中,或者第一个模式出现在行号“n”中,第二个模式出现在行号“m”中,或者第二个模式出现在行号“n”中,第一个模式出现在行中数字“米”。

实现的一种方法是读取文件并跟踪两个 int 变量,这将记录第一个模式匹配和其他模式匹配的行号。例如变量 x、y。x 将记录第一个模式的行号,y 将记录第二个模式的行号,关闭文件。然后检查 x=y 或 x> y 或 x < y 的条件,并基于该重读文件并打印 x 和 y 或 y 和 x 之间的行。不确定我是否可以在关闭文件之前重新读取文件?

另一种方法是用 (string compare(pattern1 with current line) || string compare(patter2 with current line) && (string compare(pattern1 with current line) || string compare(patter2 with current line) 编写 if 条件...不确定这是否可行,因此需要一些关于如何在 C 编程中实现它的反馈或指示。

4

1 回答 1

0

您可以使用fpos_t变量的第一种方法来跟踪文件中每个模式匹配的位置,在找到匹配项时获取这些变量的值fgetpos()。然后,您可以使用fsetpos()将文件中的位置设置回您从第一个匹配项记录的点,以重新读取这些行并打印出您想要的行。无需关闭并重新打开文件。

您可以在fgetpos/fsetpos 和 ftell/fseek中找到有关这些函数的信息,以及使用fgetpos()fsetpos() 此处的示例。

于 2013-02-03T20:38:36.460 回答