欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C实现两个文件的内容输出到同一个屏幕

程序员文章站 2022-05-03 17:54:25
编制一个程序,实现将两个文件的内容同时显示在屏幕上,并且最左边的第1-30列 显示文件1的内容,右边第41-70列显示文件2的内容;第75-76列显示两文件该行字符总和,其余列显示空白符。另外,每输...

编制一个程序,实现将两个文件的内容同时显示在屏幕上,并且最左边的第1-30列 显示文件1的内容,右边第41-70列显示文件2的内容;第75-76列显示两文件该行字符总和,其余列显示空白符。另外,每输出20行内容后,另输出2行空行。

下面看一下我的函数实现:

#include 
#include 

#define size 31

char file1[size];
char file2[size];
int i;

int readline(file *fp,char *file);

/**
 * 编制一个程序,实现将两个文件的内容同时显示在屏幕上,并且最左边的第1-30列
 * 显示文件1的内容,右边第41-70列显示文件2的内容;第75-76列显示两文件该行字符
 * 总和,其余列显示空白符。另外,每输出20行内容后,另输出2行空行。
 */
int main()
{
    file *fp1;
    file *fp2;

    char fname1[20];  //文件1的名称
    char fname2[20];  //文件2的名称

    //统计文件行数
    int linecount = 0;

    //统计每行字符个数
    int countsize = 0;

    //判断是否循环
    int isrun = 1;

    //分别用于保存第一个文件和第二个文件读取的字符数
    int count1,count2;

    printf(please enter the name of file1: );
    scanf(%s,fname1);
    printf(please enter the name of file2: );
    scanf(%s,fname2);


    fp1 = fopen(fname1,r);
    fp2 = fopen(fname2,r);

    //循环输出文件内容
    while(isrun){

        count1 = readline(fp1,file1);
        count2 = readline(fp2,file2);

        if(count1 == 0 && count2 == 0)
            break;

        if(count1 == 0){
            printfirstspace(0);
        }else{
            printf(%s,file1);
            printfirstspace(count1);
        }

        if(count2 == 0){
            printsecondspace(0);
        }else{
            printf(%s,file2);
            printsecondspace(count2);
        }

        countsize = count1 + count2;
        printf(%d
,count1+count2);

        linecount++;

        //每输出20行,打印2行空行
        if(linecount == 20){
            printf(
);
            printf(
);
            linecount = 0;
        }
    }

    fclose(fp1);
    fclose(fp2);


    return 0;
}

/**
 * 用于读取一行字符串,并返回读取的字符个数
 * @param
 *      fp   : 文件指针
 *      file : 保存读取的字符串
 */
int readline(file *fp,char *file){

    i = 0;
    int c;
    while((c = fgetc(fp)) != '
'){
        //如果读取到文件末尾的时候,就返回0
        if(feof(fp))
            break;

        file[i] = c;
        i++;

        if(i == 30)
            break;
    }

    file[i] = '';

    return i;
}

/**
 * 该方法用于输出第一个空白部分
 * @param
 *      co1 : 第一个文件读取的字符个数
 */
void printfirstspace(int co1)
{
    int spaces = 30 - co1 + 10;

    printspaces(spaces);
}

/**
 * 该方法用于输出第二个空白部分
 * @param
 *      co2 : 第二个文件读取的字符个数
 */
void printsecondspace(int co2)
{
    int spaces = 30 - co2 + 5;

    printspaces(spaces);
}

/**
 * 该方法用于输出空白
 * @param
 *      spaced : 空白的个数
 */
void printspaces(int spaces)
{
    for(i = 0;i < spaces;i++)
        printf( );
}

下面是程序的运行结果:

C实现两个文件的内容输出到同一个屏幕

这个程序还是很好玩的,这里让我想到了实现一个比较简单的文本比较程序。下一篇博客我们来实现一个文本比较程序。