这两天还做了几件事:
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;
}