鱼C论坛

 找回密码
 立即注册
查看: 858|回复: 1

[已解决]莫名其妙的字符

[复制链接]
发表于 2020-12-12 14:29:48 | 显示全部楼层 |阅读模式

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

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

x
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. int i;
  4. int main()
  5. {
  6.         char n,ch,c[7];
  7.         FILE *fp1=fopen("a.c","r");//以只读的方式打开输入文件
  8.         FILE *fp2=fopen("b.c","r");//以只读的方式打开输出文件
  9.         if(fp1==NULL){//文件a.c不存在
  10.                 printf("打开文件失败\n");
  11.                 return 0;
  12.         }
  13.         else if(fp2==NULL)//文件b.c不存在
  14.         {
  15.                 fclose(fp2);
  16.                 for(i=0;(ch=fgetc(fp1))!=EOF;i++)
  17.         {
  18.                 c[i]=ch;
  19.                 putchar(c[i]);
  20.         }
  21.             fclose(fp1);
  22.             fp2=fopen("b.c","w");
  23.             for(i=0;i<n;i++)
  24.             {
  25.                     putc(c[i],fp2);
  26.                     putchar(c[i]);
  27.             }
  28.             printf("\n");
  29.             fclose(fp2);
  30.             return 0;
  31.         }
  32.         else//两文件都存在
  33.         {
  34.                 printf("请选择是否覆盖原文件:\n覆盖则输入A\n不覆盖则输入B\n");
  35.                 scanf("%c",&n);
  36.                 switch(n)//选择是否覆盖
  37.                 {
  38.                         case'A':
  39.                         fclose(fp2);
  40.                         for(i=0;(ch=fgetc(fp1))!=EOF;i++)
  41.             {
  42.                     c[i]=ch;
  43.                     putchar(c[i]);
  44.             }
  45.             fclose(fp1);
  46.             fp2=fopen("b.c","w+");
  47.             fflush(stdin);
  48.             for(i=0;i<n;i++)
  49.             {
  50.                     putc(c[i],fp2);
  51.                     putchar(c[i]);
  52.             }
  53.             printf("\n");
  54.             fclose(fp2);
  55.                         break;
  56.                         case'B':break;
  57.                         default:printf("enter data error!\n");
  58.                 }
  59.         }
  60. }
复制代码

有没有哥哥姐姐帮我分析一下最后那行乱码咋去掉啊,烦恼
        return 0;
最佳答案
2020-12-12 15:42:30
  1. #include<stdio.h>

  2. int main(void)
  3. {
  4.         int f = 1                                                            ;
  5.         char c                                                               ;
  6.         FILE * fp1 , * fp2                                                   ;
  7.         if((fp1 = fopen("a.c" , "r")) != NULL) {
  8.                 if((fp2 = fopen("b.c" , "r")) != NULL) {
  9.                         f = 0                                                ;
  10.                         fclose(fp2)                                          ;
  11.                         printf("输出文件 <b.c> 已经存在\n")                  ;
  12.                         printf("请决定是否覆盖 (y / n) : ")                  ;
  13.                         c = getchar()                                        ;
  14.                         if(c == 'Y' || c == 'y') f = 1                       ;
  15.                 }
  16.                 if(f) {
  17.                         if((fp2 = fopen("b.c" , "w")) != NULL) {
  18.                                 c = fgetc(fp1)                               ;
  19.                                 while(! feof(fp1)) {
  20.                                         fputc(c , fp2)                       ;
  21.                                         putchar(c)                           ;
  22.                                         c = fgetc(fp1)                       ;
  23.                                 }
  24.                                 fclose(fp2)                                  ;
  25.                         } else {
  26.                                 fprintf(stderr , "\n")                       ;
  27.                                 fprintf(stderr , "无法创建输出文件 <b.c>\n") ;
  28.                                 fprintf(stderr , "\n")                       ;
  29.                         }   
  30.                 }
  31.                 fclose(fp1)                                                  ;
  32.         } else {
  33.                 fprintf(stderr , "\n")                                       ;
  34.                 fprintf(stderr , "无法打开输入文件 <a.c>\n")                 ;
  35.                 fprintf(stderr , "\n")                                       ;
  36.         }
  37. }
复制代码
QQ截图20201212142448.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-12-12 15:42:30 | 显示全部楼层    本楼为最佳答案   
  1. #include<stdio.h>

  2. int main(void)
  3. {
  4.         int f = 1                                                            ;
  5.         char c                                                               ;
  6.         FILE * fp1 , * fp2                                                   ;
  7.         if((fp1 = fopen("a.c" , "r")) != NULL) {
  8.                 if((fp2 = fopen("b.c" , "r")) != NULL) {
  9.                         f = 0                                                ;
  10.                         fclose(fp2)                                          ;
  11.                         printf("输出文件 <b.c> 已经存在\n")                  ;
  12.                         printf("请决定是否覆盖 (y / n) : ")                  ;
  13.                         c = getchar()                                        ;
  14.                         if(c == 'Y' || c == 'y') f = 1                       ;
  15.                 }
  16.                 if(f) {
  17.                         if((fp2 = fopen("b.c" , "w")) != NULL) {
  18.                                 c = fgetc(fp1)                               ;
  19.                                 while(! feof(fp1)) {
  20.                                         fputc(c , fp2)                       ;
  21.                                         putchar(c)                           ;
  22.                                         c = fgetc(fp1)                       ;
  23.                                 }
  24.                                 fclose(fp2)                                  ;
  25.                         } else {
  26.                                 fprintf(stderr , "\n")                       ;
  27.                                 fprintf(stderr , "无法创建输出文件 <b.c>\n") ;
  28.                                 fprintf(stderr , "\n")                       ;
  29.                         }   
  30.                 }
  31.                 fclose(fp1)                                                  ;
  32.         } else {
  33.                 fprintf(stderr , "\n")                                       ;
  34.                 fprintf(stderr , "无法打开输入文件 <a.c>\n")                 ;
  35.                 fprintf(stderr , "\n")                                       ;
  36.         }
  37. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-8 17:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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