C 为什么文件只包含第一次迭代的打印

C 为什么文件只包含第一次迭代的打印,c,loops,file-io,printf,C,Loops,File Io,Printf,我用C编写了这段代码,在txt文件中逐个打印从1到10的编号,但在执行之后,txt文件中只打印第一个编号。请帮忙 #include<stdio.h> #include<stdlib.h> int main() { int i; FILE *fptr; fptr=fopen("C:\\program.txt","w"); for(i=1;i<=10;i++) { fprintf(fptr,

我用C编写了这段代码,在txt文件中逐个打印从1到10的编号,但在执行之后,txt文件中只打印第一个编号。请帮忙

 #include<stdio.h>
 #include<stdlib.h>
 int main()
 {
     int i;
     FILE *fptr;

     fptr=fopen("C:\\program.txt","w");

     for(i=1;i<=10;i++)
     {
         fprintf(fptr,"\n%d\n",i);
         fclose(fptr);
     }
 }
#包括
#包括
int main()
{
int i;
文件*fptr;
fptr=fopen(“C:\\program.txt”,“w”);

对于(i=1;i您需要将
fclose()
放在
for
循环体之后


否则,您将在第一次迭代后关闭文件指针,所有涉及指针的连续循环都将调用,因为您将使用无效的文件指针(已关闭)。

在完成对文件的写入之前,不要关闭文件

#include<stdio.h>
#include<stdlib.h>
int main()
{

    int i;

    FILE *fptr;
    fptr=fopen("C:\\program.txt","w");


    for(i=1;i<=10;i++)
    {


        fprintf(fptr,"\n%d\n",i);
    }
    fclose(fptr);

}
#包括
#包括
int main()
{
int i;
文件*fptr;
fptr=fopen(“C:\\program.txt”,“w”);

对于(i=1;i,在循环的第一次迭代后,使用
fclose
关闭文件描述符。将其移出其下方的循环

正如
manfclose
所说:

[…]对流的任何进一步访问(包括另一次调用
fclose()
)都会导致未定义的行为


注:

  • 您应该检查
    fopen的返回值

这不是C++,所以请删除“C++”TAGFACTHOP(FPTR);将其取出为循环,添加返回语句。@ USER 26600 94-否,请正确注意循环体部分。