C 程序读取两个模式之间的文件行并将其打印出来

标签 c

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

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

另一种方法是编写 if 条件 with (字符串比较(模式1与当前行) || 字符串比较(模式2与当前行) && (字符串比较(模式1与当前行) || 字符串比较(模式2与当前行) ...不确定这是否有效,因此需要一些关于如何在 C 编程中实现它的反馈或指示。

最佳答案

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

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

关于C 程序读取两个模式之间的文件行并将其打印出来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14676689/

相关文章:

c - KMALLOC 大小分配

c - C语言矩阵乘法

c - Oracle Pro*C : Handling end of fetch cursor

c - 如何运行这个线程示例?

c - 读取包含奇数字符的 DAT 文件

c++ - 如何在正则表达式中匹配 '*'

c - 自由指针使用的长度值(整数)

python - 如何读取从通信端口写入的数据?

使用 libxml2 计算节点的 Childs 数

c - 如何在套接字上使用 lex 扫描器?