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

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

通过一个简单的文件文件压缩例子,来学习文件操作的相关函数。该程序以只读的方式 “r” 打开第一个文件,以只写的方式“w”打开第二个文件。将第一个文件中每隔3个字符取出一个字符存储在第二个文件中。第二个文件的文件名是第一个文件名后面加上 .red 后缀。

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #include <math.h>
  5. #define LEN 10
  6. int main()
  7. {
  8. int ch;
  9. FILE *in,*out;
  10. char name[LEN];
  11. int count = 0;
  12. //打开文件1
  13. if((in = fopen("file1.txt","r") )==NULL) { //读模式打开文件1
  14. fprintf(stderr,"open error!\r\n"); //若文件打开失败,输出错误提示
  15. exit(EXIT_FAILURE);
  16. }
  17. //设置输出
  18. strncpy(name,"file1",LEN-5); //拷贝文件名,存储在name数组中
  19. name[LEN - 5]='\0';
  20. strcat(name,".red"); //在文件名后添加 .red
  21. if((out = fopen(name,"w") )==NULL) { //写模式打开文件2
  22. fprintf(stderr,"can not cread out file! \r\n");
  23. }
  24. //拷贝数据
  25. while( (ch = getc(in)) != EOF)
  26. {
  27. if(count++ %3 ==0) //每隔3个字符存储一次
  28. putc(ch,out);
  29. }
  30. //收尾工作
  31. if( fclose(in) != 0 || fclose(out) != 0) //关闭打开的两个文件
  32. {
  33. fprintf(stderr,"Error in closing files! \r\n");
  34. }
  35. system("pause");
  36. return 0;
  37. }

在文件1中输入以下内容:

程序执行完成之后,就会生成一个新的文件。文件名和第一个文件一样,但是后缀变成了.red。

用记事本打开两个文件,对比里面的内容。

通过内容对比可以看出,文件2中的内容是文件1中每隔3个字符取一个组成的。相当于把一个文件的大小压缩成原来的1/3.

相关文章