当前位置: 移动技术网 > IT编程>开发语言>C/C++ > C实现两个文件的内容输出到同一个屏幕

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

2018年10月30日  | 移动技术网IT编程  | 我要评论

企业名录下载,美眉脱脱小游戏,殷有璨

编制一个程序,实现将两个文件的内容同时显示在屏幕上,并且最左边的第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( );
}

下面是程序的运行结果:

这里写图片描述

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

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网