通过一个简单的文件文件压缩例子,来学习文件操作的相关函数。该程序以只读的方式 “r” 打开第一个文件,以只写的方式“w”打开第二个文件。将第一个文件中每隔3个字符取出一个字符存储在第二个文件中。第二个文件的文件名是第一个文件名后面加上 .red 后缀。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
#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!\r\n"); //若文件打开失败,输出错误提示
exit(EXIT_FAILURE);
}
//设置输出
strncpy(name,"file1",LEN-5); //拷贝文件名,存储在name数组中
name[LEN - 5]='\0';
strcat(name,".red"); //在文件名后添加 .red
if((out = fopen(name,"w") )==NULL) { //写模式打开文件2
fprintf(stderr,"can not cread out file! \r\n");
}
//拷贝数据
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! \r\n");
}
system("pause");
return 0;
}
在文件1中输入以下内容:
程序执行完成之后,就会生成一个新的文件。文件名和第一个文件一样,但是后缀变成了.red。
用记事本打开两个文件,对比里面的内容。
通过内容对比可以看出,文件2中的内容是文件1中每隔3个字符取一个组成的。相当于把一个文件的大小压缩成原来的1/3.
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/qq_20222919/article/details/121018871
内容来源于网络,如有侵权,请联系作者删除!