程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> C語言入門知識 >> C實現兩個文件的內容輸出到同一個屏幕

C實現兩個文件的內容輸出到同一個屏幕

編輯:C語言入門知識

編制一個程序,實現將兩個文件的內容同時顯示在屏幕上,並且最左邊的第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( );
}

下面是程序的運行結果:

這裡寫圖片描述

這個程序還是很好玩的,這裡讓我想到了實現一個比較簡單的文本比較程序。下一篇博客我們來實現一個文本比較程序。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved