c程序将两个特定单词之间的数据从一个文件复制到另一个文件

时间:2013-05-24 05:37:22

标签: c

with header;
with linker;
package body(* some text )
vin float32=2.0;
mis float32=3.0;
raj pointtodatatype.array(.234,-.2344323343,.234555656,.2334445344)
rex float32=3*3.142345634;
procedure

我想从文本文件中读取此数据,并在从package开始到开始procedure的行之间复制数据。

因此输出将是包含以下内容的另一个文本文件:

vin float32=2.0;
mis float32=3.0;
raj pointtodatatype.array(.234,-.2344323343,.234555656,.2334445344)
rex float32=3*3.142345634;

1 个答案:

答案 0 :(得分:1)

#include <stdio.h>
#include <string.h>

int main(void)
{
    char line[4096];

    while (fgets(line, sizeof(line), stdin) != 0)
    {
        if (strncmp(line, "package ", sizeof("package ")-1) == 0)
        {
            while (fgets(line, sizeof(line), stdin) != 0)
            {
                if (strncmp(line, "procedure\n", sizeof("procedure\n")-1) == 0)
                    break;
                fputs(line, stdout);
            }
            break;
        }
    }
    return 0;
}

代码从标准输入读取并写入标准输出。如果您有file1中的数据并希望结果为file2,请使用:

./program <file1 >file2

这是标准输入/标准输出过滤器和shell I / O重定向的优点之一。

经过测试。假设procedure后没有尾随空白,代码现在会查找"procedure\n"。如果您必须允许可能的尾随空白或没有尾随空白,procedure的比较更为明显。