指针和.txt文件

我有一个小问题。 这是用于编程任务。 打开文件,然后使用fgets()复制文件的内容,然后使用fputs()将内容粘贴到新文件中。

下面的代码只会一遍又一遍地粘贴字母-每次我运行它都会更改。

char buffer[41];
 FILE *fp_in;
 FILE *fp_out;
 fp_in =fopen(INPUTFILE, "rb");
    if (fp_in==NULL)
    {
        printf("File %s cannot be opened!\n", INPUTFILE);
        return;
    }
fp_out =fopen(OUTPUTFILE1, "wb");
if (fp_out==NULL)
    {
        printf("File %s cannot be opened!\n", OUTPUTFILE1);
        return;
     }
 printf("Reading from file using fgets()\n", INPUTFILE);
 printf("writing to file using fputs() \n", OUTPUTFILE1);
    fgets(buffer,41,fp_in);
    fputs(buffer,fp_out);
fclose(fp_in);
fclose(fp_out);

下面的调整使用实际的文件名而不是指针来访问文件,它确实起作用并粘贴第一个文件的内容。

char buffer[41];
FILE *fp_in;
FILE *fp_out;
fp_in =fopen(INPUTFILE, "rb");
    if (fp_in==NULL)
    {
        printf("File %s cannot be opened!\n", INPUTFILE);
        return;
    }
fp_out =fopen("hurricane_out1.txt", "wb");
if (fp_out==NULL)
    {
        printf("File %s cannot be opened!\n", OUTPUTFILE1);
        return;
    }
printf("Reading from file using fgets()\n", INPUTFILE);
printf("writing to file using fputs() \n", OUTPUTFILE1);
    fgets(buffer,41,fp_in);
    fputs(buffer,fp_out);
fclose(fp_in);
fclose(fp_out);

我的问题是上面的代码为什么起作用,而第一个却不起作用?