注册 登录
编程论坛 C语言论坛

如何利用C程序有规律的合并两个文本文件!

hxwj 发布于 2019-11-19 08:38, 2116 次点击
有A.txt和B.txt两个文档,如何将B文档的每5行内容插入到A文档的每一行的下方!形成一个新文档
比如 A文档内容
123456.
花样百出.
B文档内容
a
b
c
d
e
g
h
i
j

合并后文档
123456.
a
b
c
d
e
花样百出.
f
g
h
i
j


3 回复
#2
rjsp2019-11-19 09:15
给出你的代码,说出你哪里不会。
#3
hxwj2019-11-19 09:51
回复 2楼 rjsp
都不知道如何定下一行,或者连续选取五行!
#4
rjsp2019-11-19 10:10
以下是引用hxwj在2019-11-19 09:51:08的发言:

都不知道如何定下一行,或者连续选取五行!
我也听不懂你在说什么
给你个示例吧
程序代码:
#include <stdio.h>
#include <stdbool.h>
#include <string.h>

bool insert_line_to( FILE* src, FILE* dst )
{
    for( bool bwrote=false; ; )
    {
        char buf[1024+1]; // 行缓冲,确保其不小于2
        char* p = fgets( buf, sizeof buf, src );
        if( !p )
        {
            if( bwrote )
            {
                fputc( '\n', dst );
                return true;
            }
            return false;
        }

        fputs( buf, dst );
        bwrote = true;

        if( buf[strlen(buf)-1] == '\n' )
            return true;
    }
}

size_t insert_lines_to( FILE* src, FILE* dst, size_t count )
{
    for( size_t r=0; r!=count; ++r )
        if( !insert_line_to(src,dst) )
            return r;
    return count;
}

int main( void )
{
    FILE* fa = fopen( "a.txt", "r" );
    FILE* fb = fopen( "b.txt", "r" );
    FILE* fc = fopen( "c.txt", "w" );

    for( ; ; )
    {
        size_t a = insert_lines_to( fa, fc, 1 );
        size_t b = insert_lines_to( fb, fc, 5 );
        if( a!=1 && b!=5 )
            break;
    }

    fclose( fc );
    fclose( fb );
    fclose( fa );
}

1