bronya1465124479 2023-01-06 13:08 采纳率: 82.6%
浏览 35
已结题

程序正常运行了,但是不知道为什么file_1文本中的hello world复制到file_2中就变成了?,希望有人解答一下要怎么改才能实现复制。

问题遇到的现象和发生背景

程序目的 把一个磁盘文件中的内容复制到另一个磁盘文件中
程序正常运行了,但是不知道为什么file_1文本中的hello world复制到file_2中就变成了?,希望有人解答一下要怎么改才能实现复制。

遇到的现象和发生背景,请写出第一个错误信息
用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
#include<stdio.h>'
#include<stdlib.h>'

void main()
{
    FILE* fp, * fq;
    errno_t error_1, error_2;
    if ((error_1 = fopen_s(&fp, "C:\\file_1.txt", "wt+"))!=NULL){
        printf("cannot open file");
        getchar();
        exit(1);
    }
    if ((error_2 = fopen_s(&fq, "C:\\file_2.txt", "wt+")) != NULL){
        printf("cannot open file");
        getchar();
        exit(1);
}
    int i,j;
    char a[100],ch;
    for (i = 0,j=1; feof(fp) != 1; i++,j++) {//将file_1中的字符存到字符数组中
        a[i] = fgetc(fp);
    }
    for (i = 0; i < j; i++) {//把字符数组的内容写入file_2
        ch = a[i];
        fputc(ch, fq);
    }
    rewind(fq);
    while (feof(fq)!=1)//输出file_2中的内容
    {
        ch = fgetc(fq);
        putchar(ch);
    }
    fclose(fq); fclose(fp);
}

运行结果及详细报错内容

img

img

img

我的解答思路和尝试过的方法,不写自己思路的,回答率下降 60%
我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”
  • 写回答

3条回答 默认 最新

  • a5156520 2023-01-06 13:45
    关注

    应该因为读取那里出错了,然后c盘读取和写入文件运行程序可能需要管理员权限才能正常运行;

    我在dev-c++使用fopen()测试的代码,读取file_1文件的模式改为了只读模式,写入file_2文件改为了只写模式,然后读取写入的地方修改了一下,然后在cmd以管理员模式打开来运行程序的,修改后程序正常运行,修改如下:

    参考链接:

    
    #include<stdio.h>
    #include<stdlib.h>
     
    int  main()
    {
        FILE* fp, * fq;
       // errno_t error_1, error_2;
        if (( fp=fopen( "C:\\file_1.txt", "r"))==NULL){
            printf("cannot open file");
            getchar();
            exit(1);
        }
        if ((fq=fopen("C:\\file_2.txt", "w")) == NULL){
            printf("cannot open file");
            getchar();
            exit(1);
        }
        int i,j;
        char a[100],ch;
        for (i = 0,j=1; feof(fp) == 0; i++,j++) {//将file_1中的字符存到字符数组中
        
            a[i] = fgetc(fp);
           // printf("read,a[%d]=%c\n",i,a[i]);
        }
        //printf("i=%d\n",i);
        
        for (j = 0; j < i; j++) {//把字符数组的内容写入file_2
            ch = a[j];
            //printf("write,a[%d]=%c\n",j,a[j]);
            fputc(ch, fq);
        }
     //  rewind(fq);
         fclose(fp);
        fclose(fq); //写入文件后,关闭文件保存文件数据 
            
        // 再次打开文件读取数据        
        if ((fq=fopen("C:\\file_2.txt", "r")) == NULL){
            printf("cannot open file");
            getchar();
            exit(1);
        }
        while (feof(fq)==0)//输出file_2中的内容
        {
            ch = fgetc(fq);
            putchar(ch);
        }
         
         fclose(fq);
    }
     
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 1月14日
  • 已采纳回答 1月6日
  • 创建了问题 1月6日

悬赏问题

  • ¥15 Centos7 / PETGEM
  • ¥15 csmar数据进行spss描述性统计分析
  • ¥15 各位请问平行检验趋势图这样要怎么调整?说标准差差异太大了
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 wpf界面一直接收PLC给过来的信号,导致UI界面操作起来会卡顿
  • ¥15 init i2c:2 freq:100000[MAIXPY]: find ov2640[MAIXPY]: find ov sensor是main文件哪里有问题吗
  • ¥15 运动想象脑电信号数据集.vhdr
  • ¥15 三因素重复测量数据R语句编写,不存在交互作用
  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗