C语言学习笔记---一个简单的文件压缩示例

x33g5p2x  于2021-10-28 转载在 其他  
字(1.0k)|赞(0)|评价(0)|浏览(611)

通过一个简单的文件文件压缩例子,来学习文件操作的相关函数。该程序以只读的方式 “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.

相关文章