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

来源:互联网 发布:翻译软件哪个好 编辑:程序博客网 时间:2024/05/29 06:36

这两天还做了几件事:

      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.txtbeginbegin begin10 11 1215 16 17 25 27 2920 21 2225 26 27        45 47 4930 31 3235 36 37        65 67 69endend             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;}


原创粉丝点击