我正在寻找逻辑和代码来读取文件并在两个匹配的模式之间打印线条。两种模式可以在一行中或者可以在下一个连续行中,或者第一个模式出现在行号“n”中,第二个模式出现在行号“m”中,或者第二个模式出现在行号“n”中,第一个模式出现在行中数字“m”。
实现的一种方法是读取文件并跟踪两个int变量,它将记录第一个模式匹配和其他模式匹配的行号。例如变量x,y。 x将记录第一个模式的行#,y将记录第二个模式的行#,关闭文件。然后检查x = y或x>的条件。 y或x < y并基于该重读文件和x和y或y和x之间的打印行。关闭之前我不确定是否可以重新读取文件?
其他方法是写条件有(字符串比较(pattern1与当前行)||字符串比较(patter2与当前行)&amp;&amp;(字符串比较(pattern1与当前行)||字符串比较(patter2与当前行)...不确定这是否有效所以需要一些反馈或指导如何在C编程中实现它。
答案 0 :(得分:0)
您可以使用fpos_t
变量的第一种方法来跟踪每个模式匹配的文件中的位置,当您找到匹配项时,使用fgetpos()
获取这些变量的值。然后,您可以使用fsetpos()
将文件中的位置设置回您从第一个匹配项中记录的位置,以重新读取这些行并打印出您想要的那些行。无需关闭并重新打开该文件。
您可以在fgetpos/fsetpos and ftell/fseek中找到有关这些功能的信息,以及使用fgetpos()
和fsetpos()
here的示例。