鱼C论坛

 找回密码
 立即注册
查看: 4103|回复: 5

编写合成器出现问题:图片可以显示,但是后缀改为rar时,就提示数据损坏

[复制链接]
发表于 2012-10-8 20:27:21 | 显示全部楼层 |阅读模式
10鱼币
  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. int main()
  4. {
  5.     FILE *f_onefile, *f_anotherfile, *f_finish;
  6.     char temp, onefile_name[100], anotherfile_name[100], finish_name[100];

  7.     printf("Hello, This is a synthesizer:\n");
  8.     printf("One file name:");
  9.     scanf("%s\n", onefile_name);
  10.     printf("Other file name:");
  11.     scanf("%s\n", anotherfile_name);
  12.     printf("Finish file name:");
  13.     scanf("%s\n", finish_name);

  14.     if(!(f_onefile = fopen(onefile_name, "rb")))
  15.     {
  16.         printf("Cannot open the onefile %s", onefile_name);
  17.         exit(1);
  18.     }
  19.     if(!(f_anotherfile = fopen(anotherfile_name, "rb")))
  20.     {
  21.         printf("Cannot open anotherfile %s", anotherfile_name);
  22.         exit(1);
  23.     }
  24.     if(!(f_finish = fopen(finish_name, "wb")))
  25.     {
  26.         printf("Cannot open the finishfile %s", finish_name);
  27.         exit(1);
  28.     }

  29.     while(!(feof(f_onefile)))
  30.     {
  31.         temp = fgetc(f_onefile);
  32.         fputc(temp, f_finish);
  33.     }
  34.     fclose(f_onefile);

  35.     while(!(feof(f_anotherfile)))
  36.     {
  37.         temp = fgetc(f_anotherfile);
  38.         fputc(temp, f_finish);
  39.     }
  40.     fclose(f_anotherfile);
  41.     fclose(f_finish);

  42.     system("pause");
  43.     return 0;
  44. }
复制代码


两个文件整合成一个,当我用一个jpg和一个rar合并时,jpg显示ok,但是rar就会提示数据损坏。
后来我用jpg和txt合并,jpg还是可以正常显示,但是txt显示出现乱码(txt里面为正常字母,如:lldkjdkf)。

请问大家,这个是因为什么原因造成的呢?
又该如何解决?

最佳答案

查看完整内容

我复制了你的代码运行了下,rar文件可以正常打开啊,打开后视频也是可以播放的。 是不是编译器的问题, 补充内容 (2012-10-8 21:33): txt文件不是二进制文件,所以txt文件是乱码。 DOS下用: copy /b 1.jpg+2.txt 3.txt(/b表示文件是二进制文件) 这样生成的3.txt也是乱码,这不是程序的问题。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-10-8 20:27:22 | 显示全部楼层
我复制了你的代码运行了下,rar文件可以正常打开啊,打开后视频也是可以播放的。
是不是编译器的问题,

补充内容 (2012-10-8 21:33):
txt文件不是二进制文件,所以txt文件是乱码。
DOS下用:
copy   /b   1.jpg+2.txt  3.txt(/b表示文件是二进制文件)
这样生成的3.txt也是乱码,这不是程序的问题。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-10-8 20:38:33 | 显示全部楼层
忘记说了,输入完文件名后加 ctrl+z,顺便再问问,我看小甲鱼老师视频时,直接回车就可以了,这个是怎么实现的?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-10-8 20:59:24 | 显示全部楼层
  1. scanf("%s\n", onefile_name);

  2. printf("Other file name:");

  3. scanf("%s\n", anotherfile_name);

  4. printf("Finish file name:");

  5. scanf("%s\n", finish_name);
复制代码

上面的scanf("%s\n")有问题吧,scanf()函数是接收函数不是打印函数,把'\n'删了应该就OK了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-10-8 21:24:47 | 显示全部楼层

谢谢你,仰孝翔,按照你的方法,ctrl+z小问题ok了,我的IDE是Code::Block 编译器 gcc

我刚刚试了下,要是将两个while语句的位置反下,rar就ok,jpg提示损坏。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-10-10 07:28:07 | 显示全部楼层
仰孝翔 发表于 2012-10-8 21:07
我复制了你的代码运行了下,rar文件可以正常打开啊,打开后视频也是可以播放的。
是不是编译器的问题,

谢谢~~~~~~~~~~~~~~~~~~~~~~
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-15 12:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表