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

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

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

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

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%
我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”

应该因为读取那里出错了,然后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

fopen_s(&fp, "C:\file_1.txt", "wt+")
改为
fopen_s(&fp, "C:\file_1.txt", "r")
读文件不要传入写参数

这个是编码问题,改一下编码。