鱼C论坛

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

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

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

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

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

x
#include<stdio.h>
#include<stdlib.h> 
int i;
int main()
{
        char n,ch,c[7];
        FILE *fp1=fopen("a.c","r");//以只读的方式打开输入文件
        FILE *fp2=fopen("b.c","r");//以只读的方式打开输出文件
        if(fp1==NULL){//文件a.c不存在 
                printf("打开文件失败\n");
                return 0;
        } 
        else if(fp2==NULL)//文件b.c不存在 
        {
                fclose(fp2);
                for(i=0;(ch=fgetc(fp1))!=EOF;i++)
        {
                c[i]=ch;
                putchar(c[i]);
        }
            fclose(fp1);
            fp2=fopen("b.c","w");
            for(i=0;i<n;i++)
            {
                    putc(c[i],fp2);
                    putchar(c[i]);
            }
            printf("\n");
             fclose(fp2);
            return 0;
        }
        else//两文件都存在 
        {
                printf("请选择是否覆盖原文件:\n覆盖则输入A\n不覆盖则输入B\n");
                scanf("%c",&n);
                switch(n)//选择是否覆盖 
                {
                        case'A':
                        fclose(fp2);
                        for(i=0;(ch=fgetc(fp1))!=EOF;i++)
            {
                    c[i]=ch;
                    putchar(c[i]);
            }
            fclose(fp1);
            fp2=fopen("b.c","w+");
            fflush(stdin);
            for(i=0;i<n;i++)
            {
                    putc(c[i],fp2);
                    putchar(c[i]);
            }
            printf("\n");
            fclose(fp2);
                        break;
                        case'B':break;
                        default:printf("enter data error!\n");
                }
        }


QQ截图20201212142448.png



        return 0;
}
有没有哥哥姐姐帮我分析一下最后一行那玩意咋去掉啊,烦恼
最佳答案
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")                                       ;
        }
}




//没有人来,你就把这个最佳给我吧。我还没有被别人最佳过
想知道小甲鱼最近在做啥?请访问 -> 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")                                       ;
        }
}




//没有人来,你就把这个最佳给我吧。我还没有被别人最佳过
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

int main(void)

略略略
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

谢谢!爱了爱了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-12 09:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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