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

简介: 版权声明:您好,转载请留下本人博客的地址,谢谢 https://blog.csdn.net/hongbochen1223/article/details/48244785 编制一个程序,实现将两个文件的内容同时显示在屏幕上,并且最左边的第1-30列 显示文件1的内容,右边第41-70列显示文件2的内容;第75-76列显示两文件该行字符总和,其余列显示空白符。
版权声明:您好,转载请留下本人博客的地址,谢谢 https://blog.csdn.net/hongbochen1223/article/details/48244785

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

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

#include <stdio.h>
#include <stdlib.h>

#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\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(" ");
}

下面是程序的运行结果:

这里写图片描述

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

目录
相关文章
|
3月前
|
Go
查看每个子文件当中第一个文件
【10月更文挑战第9天】查看每个子文件当中第一个文件 。
38 3
|
6月前
|
JavaScript 前端开发
文本,粘贴事件如何实现,先实现一个小目标,如何存入图片,从本地生成源码,先转成base64,ctrl + v这张图片就显示出来了怎样实现的,Vue可以有方法可以获取粘贴的所有元素,转base64字符串
文本,粘贴事件如何实现,先实现一个小目标,如何存入图片,从本地生成源码,先转成base64,ctrl + v这张图片就显示出来了怎样实现的,Vue可以有方法可以获取粘贴的所有元素,转base64字符串
从键盘上输入10个整数,写入到一个文件number.txt中,然后从此文件读出数据,显示在屏幕上。
从键盘上输入10个整数,写入到一个文件number.txt中,然后从此文件读出数据,显示在屏幕上。
267 0
|
计算机视觉 Python
训练集制作:以指定帧间隔截取视频为图片,并保存指定路径及名称
训练集制作:以指定帧间隔截取视频为图片,并保存指定路径及名称
训练集制作:以指定帧间隔截取视频为图片,并保存指定路径及名称
读取文件结束的判定的概念,使用方法和文件缓冲区的位置
读取文件结束的判定的概念,使用方法和文件缓冲区的位置
140 0
038.同时显示两个文件的内容
038.同时显示两个文件的内容
79 0
|
Java
编写Java程序,读取文本文档的内容,去除文本中包含的“广告”字样,把更改后的内容保存到一个新的文本文档中
编写Java程序,读取文本文档的内容,去除文本中包含的“广告”字样,把更改后的内容保存到一个新的文本文档中
264 0
编写Java程序,读取文本文档的内容,去除文本中包含的“广告”字样,把更改后的内容保存到一个新的文本文档中
Py:利用pyautogui实现自动将pdf文件(需手动设定pdf总页数)自动翻页并截取另存为图片形式,或自动隔0.1秒自动截笔记本全屏保存到指定文件夹
Py:利用pyautogui实现自动将pdf文件(需手动设定pdf总页数)自动翻页并截取另存为图片形式,或自动隔0.1秒自动截笔记本全屏保存到指定文件夹
Py:利用pyautogui实现自动将pdf文件(需手动设定pdf总页数)自动翻页并截取另存为图片形式,或自动隔0.1秒自动截笔记本全屏保存到指定文件夹
|
C# Shell
【C#】获取任意文件的缩略图
原文:【C#】获取任意文件的缩略图 因为用shell取缩略图时,对于损坏的文件,读出来的图有黑边,所以就诞生了以下方法,不过这个效率要比用shell取的低3-4倍。
1784 0