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 请问有人会紧聚焦相关的matlab知识嘛?
  • ¥15 网络通信安全解决方案
  • ¥50 yalmip+Gurobi
  • ¥20 win10修改放大文本以及缩放与布局后蓝屏无法正常进入桌面
  • ¥15 itunes恢复数据最后一步发生错误
  • ¥15 关于#windows#的问题:2024年5月15日的win11更新后资源管理器没有地址栏了顶部的地址栏和文件搜索都消失了
  • ¥100 H5网页如何调用微信扫一扫功能?
  • ¥15 讲解电路图,付费求解
  • ¥15 有偿请教计算电磁学的问题涉及到空间中时域UTD和FDTD算法结合的
  • ¥15 three.js添加后处理以后模型锯齿化严重