| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
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; 
} 
 |   
 
 
 
 |