C 为什么文件只包含第一次迭代的打印
我用C编写了这段代码,在txt文件中逐个打印从1到10的编号,但在执行之后,txt文件中只打印第一个编号。请帮忙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,
#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-否,请正确注意循环体部分。