通过一个简单的文件文件压缩例子,来学习文件操作的相关函数。该程序以只读的方式 “r” 打开第一个文件,以只写的方式“w”打开第二个文件。将第一个文件中每隔3个字符取出一个字符存储在第二个文件中。第二个文件的文件名是第一个文件名后面加上 .red 后缀。
#include#include #include #include #define LEN 10 int main() { int ch; FILE *in,*out; char name[LEN]; int count = 0; //打开文件1 if((in = fopen("file1.txt","r") )==NULL) { //读模式打开文件1 fprintf(stderr,"open error!rn"); //若文件打开失败,输出错误提示 exit(EXIT_FAILURE); } //设置输出 strncpy(name,"file1",LEN-5); //拷贝文件名,存储在name数组中 name[LEN - 5]=' '; strcat(name,".red"); //在文件名后添加 .red if((out = fopen(name,"w") )==NULL) { //写模式打开文件2 fprintf(stderr,"can not cread out file! rn"); } //拷贝数据 while( (ch = getc(in)) != EOF) { if(count++ %3 ==0) //每隔3个字符存储一次 putc(ch,out); } //收尾工作 if( fclose(in) != 0 || fclose(out) != 0) //关闭打开的两个文件 { fprintf(stderr,"Error in closing files! rn"); } system("pause"); return 0; }
在文件1中输入以下内容:
程序执行完成之后,就会生成一个新的文件。文件名和第一个文件一样,但是后缀变成了.red。
用记事本打开两个文件,对比里面的内容。
通过内容对比可以看出,文件2中的内容是文件1中每隔3个字符取一个组成的。相当于把一个文件的大小压缩成原来的1/3.



