鱼C论坛

 找回密码
 立即注册
查看: 972|回复: 3

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

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

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

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

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.         } QQ截图20201212142448.png
  60.         return 0;
  61. }
复制代码

有没有哥哥姐姐帮我分析一下最后一行那玩意咋去掉啊,烦恼
最佳答案
2020-12-12 16:00:35
#include<stdio.h>

int main(void)
{
        int f = 1                                                            ;
        char c                                                               ;
        FILE * fp1 , * fp2                                                   ;
        if((fp1 = fopen("a.c" , "r")) != NULL) {
                if((fp2 = fopen("b.c" , "r")) != NULL) {
                        f = 0                                                ;
                        fclose(fp2)                                          ;
                        printf("输出文件 <b.c> 已经存在\n")                  ;
                        printf("请决定是否覆盖 (y / n) : ")                  ;
                        c = getchar()                                        ;
                        if(c == 'Y' || c == 'y') f = 1                       ;
                }
                if(f) {
                        if((fp2 = fopen("b.c" , "w")) != NULL) {
                                c = fgetc(fp1)                               ;
                                while(! feof(fp1)) {
                                        fputc(c , fp2)                       ;
                                        putchar(c)                           ;
                                        c = fgetc(fp1)                       ;
                                }
                                fclose(fp2)                                  ;
                        } else {
                                fprintf(stderr , "\n")                       ;
                                fprintf(stderr , "无法创建输出文件 <b.c>\n") ;
                                fprintf(stderr , "\n")                       ;
                        }   
                }
                fclose(fp1)                                                  ;
        } else {
                fprintf(stderr , "\n")                                       ;
                fprintf(stderr , "无法打开输入文件 <a.c>\n")                 ;
                fprintf(stderr , "\n")                                       ;
        }
}




//没有人来,你就把这个最佳给我吧。我还没有被别人最佳过
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-12-12 16:00:35 | 显示全部楼层    本楼为最佳答案   
#include<stdio.h>

int main(void)
{
        int f = 1                                                            ;
        char c                                                               ;
        FILE * fp1 , * fp2                                                   ;
        if((fp1 = fopen("a.c" , "r")) != NULL) {
                if((fp2 = fopen("b.c" , "r")) != NULL) {
                        f = 0                                                ;
                        fclose(fp2)                                          ;
                        printf("输出文件 <b.c> 已经存在\n")                  ;
                        printf("请决定是否覆盖 (y / n) : ")                  ;
                        c = getchar()                                        ;
                        if(c == 'Y' || c == 'y') f = 1                       ;
                }
                if(f) {
                        if((fp2 = fopen("b.c" , "w")) != NULL) {
                                c = fgetc(fp1)                               ;
                                while(! feof(fp1)) {
                                        fputc(c , fp2)                       ;
                                        putchar(c)                           ;
                                        c = fgetc(fp1)                       ;
                                }
                                fclose(fp2)                                  ;
                        } else {
                                fprintf(stderr , "\n")                       ;
                                fprintf(stderr , "无法创建输出文件 <b.c>\n") ;
                                fprintf(stderr , "\n")                       ;
                        }   
                }
                fclose(fp1)                                                  ;
        } else {
                fprintf(stderr , "\n")                                       ;
                fprintf(stderr , "无法打开输入文件 <a.c>\n")                 ;
                fprintf(stderr , "\n")                                       ;
        }
}




//没有人来,你就把这个最佳给我吧。我还没有被别人最佳过
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-12 16:08:11 | 显示全部楼层
严凯 发表于 2020-12-12 16:00
#include

int main(void)

略略略
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-12 16:45:49 | 显示全部楼层

谢谢!爱了爱了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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