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

来源:互联网 发布:如何安装网络机顶盒 编辑:程序博客网 时间:2024/05/16 12:23

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

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

#include <stdio.h>#include <stdlib.h>#define size 31char 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\n",count1+count2);        linecount++;        //每输出20行,打印2行空行        if(linecount == 20){            printf("\n");            printf("\n");            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)) != '\n'){        //如果读取到文件末尾的时候,就返回0        if(feof(fp))            break;        file[i] = c;        i++;        if(i == 30)            break;    }    file[i] = '\0';    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(" ");}

下面是程序的运行结果:

这里写图片描述

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

1 0