2013-02-03 17 views
0

我正在寻找逻辑和代码来读取文件并打印两个匹配模式之间的行。这两种模式可能在一行或可能在下一个连续行或第一种模式出现在行号“n”和第二种模式出现行号“m”或第二种模式出现行号“n”和第一种模式出现在行数字“m”。C编读取两个模式之间的文件行并将其打印出来

一种实现方式是读取文件并跟踪两个int变量,它会记录第一个模式匹配和其他模式匹配的行号。例如变量x,y。 x将记录第一个模式的行号,y将记录第二个模式的行号,关闭文件。然后检查x = y或x> y或x < y的条件,并基于x和y或y和x之间的重读文件和打印行。不确定在关闭之前是否可以重新读取文件? (字符串比较(pattern1与当前行)||字符串比较(patter2与当前行)& &(字符串比较(pattern1与当前行)||字符串比较(patter2与当前行相同)& &线)......不知道这是否会起作用,所以需要一些关于如何在C编程中实现它的反馈或指针

+0

你的代码到目前为止是什么样的? –

回答

0

您可以使用第一种方法与fpos_t变量来跟踪文件中的位置每个模式都匹配,找到匹配项后用fgetpos()获得这些变量的值,然后您可以使用fsetpos()将文件中的位置设置回您已录制的点或者从第一场比赛开始重新阅读这些文字并打印出你想要的文字。没有必要关闭并重新打开文件。

您可以在fgetpos/fsetpos and ftell/fseek中找到关于这些功能的信息,以及使用fgetpos()fsetpos()here的示例。

+0

@匿名,我还没有完成。你有任何代码片断? – devnp

+0

@devnp:如果您将问题编辑为现有代码的最小功能片段,我可以建议如何使用fgetpos()等。然而事实上,你的问题的第二段描述了如何使用这些函数,除了你建议使用'int'。使用'fpos_t'而不是'int'来处理文件很长并且字节数超过int的最大值的情况。 – Simon

相关问题