編制一個程序,實現將兩個文件的內容同時顯示在屏幕上,并且最左邊的第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(" ");
}
~~~
下面是程序的運行結果:

這個程序還是很好玩的,這里讓我想到了實現一個比較簡單的文本比較程序。下一篇博客我們來實現一個文本比較程序。
- 前言
- 實例一:HelloWorld
- scanf函數學習
- 實數比較
- sizeof()保留字獲取類型的大小
- 自增/自減學習
- C學習if條件判斷和for循環
- C實現的九九乘法表
- C實現一個比較簡單的猜數游戲
- 使用C模擬ATM練習switch..case用法
- 記錄一個班級的成績練習一維數組
- C數組實現矩陣的轉置
- C二維數組練習
- 利用數組求前n個質數
- C實現萬年歷
- C實現數組中元素的排序
- C實現任意進制數的轉化
- C判斷一個正整數n的d進制數是否是回文數
- C使用遞歸實現前N個元素的和
- 鋼材切割問題
- 使用指針比較整型數據的大小
- 指向數組的指針
- 尋找指定元素
- 尋找相同元素的指針
- 整數轉換成羅馬數字
- 字符替換
- 從鍵盤讀入實數
- C實現字符行排版
- C實現字符排列
- C實例--判斷一個字符串是否是回文數
- 通訊錄的輸入輸出
- 撲克牌的結構定義
- 使用“結構”統計學生成績
- 報數游戲
- 模擬社會關系
- 統計文件中字符個數
- C實現兩個文件的內容輸出到同一個屏幕