编制一个程序,实现将两个文件的内容同时显示在屏幕上,并且最左边的第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(" ");
}
~~~
下面是程序的运行结果:
![这里写图片描述](https://box.kancloud.cn/2016-05-24_5743c0ad3ea13.jpg "")
这个程序还是很好玩的,这里让我想到了实现一个比较简单的文本比较程序。下一篇博客我们来实现一个文本比较程序。
- 前言
- 实例一: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实现两个文件的内容输出到同一个屏幕