课后习题:简单文件的相加

这两天还做了几件事:

      1. 把我的排序敲了好几遍

准备近期在巩固一下,顺便研究一下排序在链表中的不同之处

2. 追加通讯录的保存到文件中的功能

由于就加了两个函数,这里我就不发了

3. 终于把陈正冲老师的《c语言深度解剖》看完了 

说这话实在是吹牛了,这书看了大半月了,还有一两章没看,写在这,就是给自己下个誓,今天必须看完。

陈老师的书写的很深刻,有好多地方我都看不懂,奈何我另有课程,有些地方只能先放一放,以后再补。

4.课后习题:简单文件的相加

最后才回归到题目,这个题目还是很简单的,没什么实际用处,就是联系一下文件编译

我用了两个版本,先是fread 和 fwrite

/*
2017年8月7日15:49:15
目的 : 手动创建两个文本文件text1.txt,text2.txt,要求编程创建text3.txt,实现text1.txt和text2.txt文件
		中除去首行和末尾对应的数据相加,三个文本的内容如下
		text1.txt   text2.txt 		text3.txt
		begin		begin 			begin
		10 11 12	15 16 17 		25 27 29
		20 21 22	25 26 27        45 47 49
		30 31 32	35 36 37        65 67 69
		end			end             end
*/

#include <stdio.h>

int main()
{
	FILE * fp1 = fopen("text1.txt", "r");
	if(fp1 == NULL)
	{
		perror("fopen fp1");
		return -1;
	}
	FILE * fp2 = fopen("text2.txt", "r");
	if(fp2 == NULL)
	{
		perror("fopen fp2");
		return -1;
	}
	FILE * fp3 = fopen("text3.txt", "w+");
	if(fp3 == NULL)
	{
		perror("fopen fp3");
		return -1;
	}

	char buf1[1] = {0};
	char buf2[1] = {0};
	char buf3[1] = {0};
	//char num_ch1[10];      //用来存放text1的数字
	//char num_ch2[10];      //用来存放text2的数字
	while(1)
	{
		int a1 =fread(buf1,sizeof(char),1,fp1);
		if(a1 == 0)
		{
			break;
		}
		int a2 =fread(buf2,sizeof(char),1,fp2);
		if(a2 == 0)
		{
			break;
		}
		
		if(buf1[0] >= '0' && buf1[0] <= '9')
		{
			buf3[0] = buf1[0] + buf2[0] - '0';
			fwrite(buf3,sizeof(char),1,fp3);
		}
		else
		{
			buf3[0] = buf1[0];
			fwrite(buf3,sizeof(char),1,fp3);
		}
	}

	fclose(fp1);
	fclose(fp2);
	fclose(fp3);
	return 0;
}

然后是fgetc fputc的 

#include <stdio.h>

int main()
{
	FILE * fp1 = fopen("text1.txt", "r");
	if(fp1 == NULL)
	{
		perror("fopen fp1");
		return -1;
	}
	FILE * fp2 = fopen("text2.txt", "r");
	if(fp2 == NULL)
	{
		perror("fopen fp2");
		return -1;
	}
	FILE * fp3 = fopen("text3_2.txt", "w+");
	if(fp3 == NULL)
	{
		perror("fopen fp3");
		return -1;
	}
	
	int ch1,ch2,ch3;
	while(ch1 = fgetc(fp1))
	{
		if (ch1 == EOF)
			break;
		ch2 = fgetc(fp2);
		if(ch1 >= '0' && ch1 <= '9')
		{
			ch3 = ch1 + ch2 -'0';
			fputc(ch3,fp3);	
		}
		else 
		{
			fputc(ch1,fp3);	
		}
	}

	fclose(fp1);
	fclose(fp2);
	fclose(fp3);
	return 0;
}


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值