nightkk 发表于 2015-12-24 11:47:51

图片文件转换器

我用下面这个程序把图片和一个rar的文本加到一起,图片上4的大小也为1和2 的和,可是我把4的名字改为4.rar, 并不会变成rar的形式

我用的是windows8.1的系统


#include <stdio.h>
#include <stdlib.h>

void main()
{
      FILE *f_file, *f_pic, *f_finish;
      char ch, pic_name, file_name, finish_name;

      printf("请输入要合成的图片、文件名称: \n");
      printf("图片: ");
      scanf("%s", pic_name);
      printf("文件: ");
      scanf("%s", file_name);
      printf("结果: ");
      scanf("%s", finish_name);
      
      if( !(f_pic = fopen(pic_name, "rb")))
      {
            printf("Cannot open the ficture %s!\n", pic_name);
            exit(0);   // 终止程序
      }
      if( !(f_file = fopen(file_name, "rb")))
      {
            printf("Cannot open the file %s!\n", file_name);
            exit(0);   // 终止程序
      }
      if( !(f_finish = fopen(finish_name, "wb")))
      {
            printf("Cannot open the file %s!\n", finish_name);
            exit(0);    // 终止程序
      }

      while( !feof(f_pic) )
      {
            ch = fgetc(f_pic);
            fputc(ch, f_finish);
      }
      fclose(f_pic);

      while( !feof(f_file) )
      {
            ch = fgetc(f_file);
            fputc(ch, f_finish);
      }
      fclose(f_file);
      fclose(f_finish);
}

ryxcaixia 发表于 2015-12-24 11:47:52

本帖最后由 ryxcaixia 于 2015-12-24 13:06 编辑

少年 在windows里利用后缀名来区分文件 是因为每个文件都有自己的文件结构
以.bmp图片文件为例
最开始的14字节是tagBITMAPFILEHEADER结构体 并且每个字段都要有自己对应的值
接下来的40个字节是tagBITMAPINFOHEADER结构体 同理 每个字段也要对应赋值
依次类推 所以各个图片查看软件 去读取这些文件 然后解析各个字段的数据解析 之后才能显示出来
这些结构体就算完全正确 但是在文件中的位置顺序颠倒一个都不行 这都是有严格的顺序的

楼主 你这样利用c文件操作 把两个文件完全叠加在一起 没问题 并且加之后的大小是两个文件的总和也是对的
但这样不考虑文件结构咣咣像丢垃圾一样完全把各不相干的东西叠加在一起 你让.rar的文件打开工具怎么解析? 固定的位置找不到有效信息 当然出错

nightkk 发表于 2015-12-24 20:23:29

ryxcaixia 发表于 2015-12-24 13:05
少年 在windows里利用后缀名来区分文件 是因为每个文件都有自己的文件结构
以.bmp图片文件为例
最开始的1 ...

但是小甲鱼在视频里面就是这样做的啊,但是他的可以打开

nightkk 发表于 2015-12-24 20:29:05

ryxcaixia 发表于 2015-12-24 13:05
少年 在windows里利用后缀名来区分文件 是因为每个文件都有自己的文件结构
以.bmp图片文件为例
最开始的1 ...

我还有一个疑问,小甲鱼直接把1.jpg 改为1.rar 就变成了压缩文件的形式,可是我的不行

DarkSE 发表于 2015-12-27 12:43:50

nightkk 发表于 2015-12-24 20:29
我还有一个疑问,小甲鱼直接把1.jpg 改为1.rar 就变成了压缩文件的形式,可是我的不行

你确定你改的是后缀?而不是文件名……。它要求改后缀

DarkSE 发表于 2015-12-27 12:44:59

nightkk 发表于 2015-12-24 20:29
我还有一个疑问,小甲鱼直接把1.jpg 改为1.rar 就变成了压缩文件的形式,可是我的不行

你把后缀名一起截图出来,要是改了不行,可以用属性看看是不是rar格式

淫令天下 发表于 2015-12-27 16:00:52

你在改名字之前不要隐藏已知文件类型的扩展名
页: [1]
查看完整版本: 图片文件转换器