c语言文件部分习题,找不到哪里错了

题目是将一个文件的内容复制到另一个文件,找不到哪里错了就是不成功,我照着书敲都瞧不出来。

img

#include
#include
 
int main ()
{
    FILE *in,*out;
    char ch;
    char infile[20],outfile[20];
    printf("请输入读入的文件名\n"); 
    scanf("%s",infile);
    printf("请输入读入的文件名\n");
    scanf("%s",outfile);
    if((in=fopen(infile,"r"))==NULL)
    {
        printf("文件打开失败!1");
        exit(0);        
    }
    if((in=fopen(outfile,"w"))==NULL)
    {
        printf("文件打开失败!2");
        exit(0);        
    }
    
    ch=fgetc(in);
    while(!feof(in))
    {
        putchar(ch);
        ch=fgetc(in);
        fputc(ch,out);
    }
    putchar(10);
    printf("复制成功!!");

    return 0;
} 

回答:关于文件读写,可以参考这个文章:https://www.runoob.com/cprogramming/c-file-io.html

代码如下(魔改了一部分,因为我对于C语言的一些库函数也不是特别熟悉):

# include <stdio.h>

int main()
{
    FILE *in, *out;
    char infile[20], outfile[20];
    printf("请输入读入的文件名:");
    scanf("%s", infile);
    printf("请输入读入的文件名:");
    scanf("%s", outfile);
    
    if ((in = fopen(infile, "r")) == NULL)
    {
        printf("文件打开失败!1");
        return 0;
    }
    if ((out = fopen(outfile, "w")) == NULL)
    {
        printf("文件打开失败!2");
        return 0;
    }
    
    printf("复制开始!!\n");
    char buff[1024];

    fgets(buff, 1024, in);
    fputs(buff, out);
    
    fclose(in);
    fclose(out);
    printf("复制成功!!\n");
    return 0;
}

然后,我改了半天发现是你有个地方写错了

img

#include <stdio.h>
#include <stdlib.h>

int main()
{
    FILE *in, *out;
    char ch;
    char infile[20], outfile[20];
    
    printf("请输入读入的文件名\n");
    scanf("%s", infile);
    printf("请输入读入的文件名\n");
    scanf("%s", outfile);
    
    if ((in= fopen(infile, "r"))== NULL)
    {
        printf("文件打开失败!1");
        exit(0);
    }
    if ((out= fopen(outfile, "w"))== NULL)
    {
        printf("文件打开失败!2");
        exit(0);
    }
    
    ch = fgetc(in);
    while (!feof(in))
    {
        putchar(ch);
        ch = fgetc(in);
        fputc(ch, out);
    }
    putchar(10);
    printf("复制成功!!");
    return 0;
}