鱼C论坛

 找回密码
 立即注册
查看: 2661|回复: 6

帮我看看那里有错误!十分感谢!

[复制链接]
发表于 2012-5-15 22:20:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
小甲鱼老师C程序与设计视频中对文件的操作第2个视频最后留下的课后题。#if(0) #endif 是在看小甲鱼老师的答案前自己写的,后边的是看完答案后改的。2种方式运行后都提示正确,没有报错。结果也是一样的。但是!!!!。先说下题目的要求。就是把一个图片文件和一个RAR压缩文件合成为一个JPG文件,然后改变合成后的文件的后缀名为RAR。这样当文件名是JPG的时候正常显示原来合成前的图片。改成RAR之后,正常显示原来的RAR文件。我现在的问题是,第3个文件正常生成。大小也是原来2个文件的和。但是我把后缀名改成RAR后,双击提示压缩文件已经损坏。我的系统是WIN7 64位专业版。编程环境是Visual 2010  那位大大能告诉我下,这个错误是因为我编译环境或操作系统的原因造成的还是因为我程序写的有问题。自己找了好多边了,也没看出来写的有问题。
#include<stdio.h>
#include<stdlib.h>
int main ()
{
     FILE *fp,*fp_1;
     char filename[30],filename_1[30],filename_2[30],ch;
     printf("请输入需要合成的文件:\n图片:");
     gets(filename);
     printf("文件:");
     gets(filename_1);
     printf("合成后的名字:");
     gets(filename_2);
#if(0)
     if(!(fp = fopen(filename,"rb")))
     {
          printf("cannot  open 1th file\n ");
          exit(0);
     }

     if(!(fp_1 = fopen(filename_2,"wb")))
     {
          printf("cannot open 3th file\n");
          exit(0);
     }
     while(!(feof(fp)))
     {
          ch = fgetc(fp);
          fputc(ch,fp_1);
     }
     fclose(fp);
     fclose(fp_1);
     if(!(fp = fopen(filename_1,"rb")))
     {
          printf("cannot  open 1th file\n ");
          exit(0);
     }
     if(!(fp_1 = fopen(filename_2,"ab")))
     {
          printf("cannot open 3th file\n");
          exit(0);
     }
     while(!(feof(fp)))
     {
          ch = fgetc(fp);
          fputc(ch,fp_1);
     }
     fclose(fp);
     fclose(fp_1);
#endif
     if(!(fp = fopen(filename,"rb")))
     {
          printf("cannot  open 1th file\n ");
          exit(0);
     }
     if(!(fp_1 = fopen(filename_2,"wb")))
     {
          printf("cannot open 3th file\n");
          exit(0);
     }
     while(!(feof(fp)))
     {
          ch = fgetc(fp);
          fputc(ch,fp_1);
     }
     fclose(fp);
     if(!(fp = fopen(filename_1,"rb")))
    {
          printf("cannot  open 1th file\n ");
          exit(0);
     }
     while(!(feof(fp)))
    {
         ch = fgetc(fp);
      fputc(ch,fp_1);
    }
    fclose(fp);
    fclose(fp_1);
    system("pause");
    return 0;
}
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-5-16 10:55:44 | 显示全部楼层
提示压缩文件已损坏,说明编码出问题了
把char改成int试试?
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-5-16 12:51:21 | 显示全部楼层
十分感谢!!
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-5-16 13:08:30 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-5-17 14:20:50 | 显示全部楼层
我心永恒 发表于 2012-5-16 13:08
十分感谢!

解决了吗?
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-5-17 15:50:53 | 显示全部楼层
我刚刚也提过这方面问题
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-5-18 09:20:06 | 显示全部楼层

没解决。。。还是那样
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-11-4 08:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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