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

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

下面是程序的运行结果:

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

版权声明:您好,转载请留下本人博客的地址,谢谢

时间: 2024-10-14 12:13:55

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

同时实现两个文件的内容

字面上很容易理解,两个文件的内容在同一个水平画面上.文件1占1-30列,然后中间20列用空格隔开,文件2占剩下的30列. 下面我说下我的思路: 比如说规定两篇文章水平的长度为80,文件1先输入1-30个字符(输够的话就用空格符来顶替),然后在用20个空格副隔开,接着再输入文件2的内容30个字符(输够的话也用空格补充),这样就完成了一行的输入.这么想就简单了,两个循环,先外循环输入一行,再内循环输入80个字符.行数是不确定的,因为不知道文件的内容(就算知道了计算也很麻烦),但是列数是确定的,就80

用python比较两个文件中内容的不同之处, 并输出行号和内容.

代码部分: '''cmpfile.py - 比对两个文件, 如果有不同之处, 打印内容和行号''' import os class cmpFile: def __init__(self, file1, file2): self.file1 = file1 self.file2 = file2 def fileExists(self): if os.path.exists(self.file1) and os.path.exists(self.file2): return True else: r

使用Vim比较两个文件的内容

原文地址:http://blog.chinaunix.net/uid-22548820-id-3477464.html 1. 使用vim的比较模式打开两个文件: vim -d file1 file2 或 vimdiff file1 file2 2. 如果已经打开了文件file1,再打开另一个文件file2进行比较: :vert diffsplit file2 如果没有用vert命令,diffsplit则会分上下两个窗口. 3. 如果已经用split方式打开了两个文件file1,file2,又想比

【转载】vim 比较两个文件的内容

1. 使用vim的比较模式打开两个文件: vim -d file1 file2 或 vimdiff file1 file2 2. 如果已经打开了文件file1,再打开另一个文件file2进行比较: :vert diffsplit file2 如果没有用vert命令,diffsplit则会分上下两个窗口. 3. 如果已经用split方式打开了两个文件file1,file2,又想比较两文件的不同. 分别在两个窗口里面输入命令: :diffthis 4. 如果更改了某个窗口的内容,vim又没有自动更新

比较两个文件内容是否相同

/* 判断两个文件的内容是否相同,文件名要用绝对路径 * @param fileName1 :文件1的绝对路径 * @param fileName2 :文件2的绝对路径 * @return 相同返回true,不相同返回false */ public boolean isSameFile(String fileName1,String fileName2){ FileInputStream fis1 = null; FileInputStream fis2 = null; try { fis1 =

linux比较两个文件的不同(6/21)

cmp 命令:比较任意两个类型的文件,且吧结果输出到标准输出,默认文件相同不输出,不同的文件输出差异 必要参数 -c 显示不同的信息-l 列出所有的不同信息-s 错误信息不提示 选择参数 -i<字符数> 指定字符数目-v 显示版本信息--help 显示帮助信息 [函数的返回值] 0 :文件时同样的1 :文件是不同的>1:发生错误 comm将逐行比较已经排序的两个文件.显示结果包括3列: 第1列为只在file1中找到的行;第2列为只在file2中找到的行;第3列为两个文件的公用行. 参数

diff - 找出两个文件的不同点

总览 diff [选项] 源文件 目标文件 描述 在最简单的情况是, diff 比较两个文件的内容 (源文件 和 目标文件). 文件名可以是 - 由标准输入设备读入的文本. 作为特别的情况是, diff - - 比较一份标准输入的它自己的拷贝如果 源文件 是一个目录和 目标文件 不是(目录), diff 会比较在 源文件(目录) 里的文件的中和 目标文件同名的(文件), 反过来也一样. 非目录文件不能是 -. 如果 源文件 和 目标文件 都是目录, diff 比较两个目录中相应的文件,依照字母次

计算机二级-C语言-程序填空题-190117记录-对文件的处理,复制两个文件,往新文件中写入数据。

//给定程序的功能是,调用函数fun将指定源文件中的内容赋值到指定目标文件中,复制成功时函数返回1,失败时返回0,把复制的内容输出到终端屏幕.主函数中源文件名放在变量sfname中,目标文件名放在变量tfname中. //重难点:对文件的处理.如何判断文件是否达到末尾,如何往文件中写入数据. 1 #include <stdio.h> 2 #include <stdlib.h> 3 int fun(char *source, char *target) 4 { FILE *fs,*f

每日一题--4--在两个文件中取交集,显示指定的内容

把这个两个文件都存在的用户的密码输出出来 [[email protected] student]# head file1 file2 ==> file1 <== oldboy 1234 alex 4567 lidao 9999 ==> file2 <== 001 lidao 002 alex 003 oldboy 004 oldgirl 提示:需要用到如何判断这两个文件不是一个文件. 解题思路 awk 'FNR==NR{h[$1]=$2}FNR!=NR{print h[$2]}'