多次对一个文件fopen

taot2009 2009-10-12 08:28:17
#include<stdio.h>


void main()
{
int i;
FILE *fp;
char *filename="abc.txt";
if((fp=fopen(filename,"w"))==NULL)
printf("can't open the file 1");
fclose(fp);
printf("create file successfully");
for(i=0;i<1000;i++)
{
printf("%d\t",i);
if((fp=fopen(filename,"a"))==NULL)
printf("can't open the file 2\n");

else
fprintf(fp++,"%s\t","aaa");
}
}


那位高手帮忙看看这个问题,
这个程序是可以运行的,就是不明白
为什么fopen运行次数多了就can't open file
而且每次的运行结果不一样,有时从600开始就can't open file
而有时多,有时少,
这个问题怎么解决呢
...全文
873 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
taot2009 2009-10-12
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 meipen 的回复:]
引用 7 楼 kouwenlong 的回复:
引用 3 楼 taot2009 的回复:
引用 1 楼 meipen 的回复:
记得close啊 光开不闭  那就开一次还不够 ?

开一次怎么弄呢?不能多次些数据进去的啊?

就打开文件一次,以追加方式打开。以后的数据都会存储到文件的末尾,这样就可以。

是呢 是呢 就这样就可以
[/Quote]

关键问题好像是,一次打开以后,fprintf(fp++,"%s\t","aaa");中的“++”不能要。

6楼的程序也没有对。
再次谢谢大家!
结贴了
小小攻城师 2009-10-12
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 whg01 的回复:]
一个程序能打开的文件个数是有限制的。
所以用完的文件要fclose(fp);
[/Quote]
学习下 跟楼主一样学习中
taot2009 2009-10-12
  • 打赏
  • 举报
回复
多谢各位热心相助,
问题已经解决。4楼的程序就可以了:用“w”格式打开,
然后后面的那句fprintf(fp++,"%s\t","aaa");中的++去掉就OK了
meipen 2009-10-12
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 kouwenlong 的回复:]
引用 3 楼 taot2009 的回复:
引用 1 楼 meipen 的回复:
记得close啊 光开不闭  那就开一次还不够 ?

开一次怎么弄呢?不能多次些数据进去的啊?

就打开文件一次,以追加方式打开。以后的数据都会存储到文件的末尾,这样就可以。
[/Quote]
是呢 是呢 就这样就可以
whg01 2009-10-12
  • 打赏
  • 举报
回复
一个程序能打开的文件个数是有限制的。
所以用完的文件要fclose(fp);
kouwenlong 2009-10-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 taot2009 的回复:]
引用 1 楼 meipen 的回复:
记得close啊 光开不闭  那就开一次还不够 ?

开一次怎么弄呢?不能多次些数据进去的啊?
[/Quote]
就打开文件一次,以追加方式打开。以后的数据都会存储到文件的末尾,这样就可以。
aizibion 2009-10-12
  • 打赏
  • 举报
回复
#include <stdio.h>
void main()
{
int i;
FILE *fp;
char *filename="abc.txt";
if((fp=fopen(filename,"w"))==NULL)
printf("can't open the file 1");
fclose(fp);
fp =NULL;
printf("create file successfully");
fp=fopen(filename,"a");
while (fp==NULL)
{
fp=fopen(filename,"a");
}

for(i=0;i <1000;i++)
{
printf("%d\t",i);
fprintf(fp++,"%s\t","aaa");
}
fclose(fp);
}
xingzhe2001 2009-10-12
  • 打赏
  • 举报
回复
系统的handle是有限资源
野男孩 2009-10-12
  • 打赏
  • 举报
回复

#include <stdio.h>


void main()
{
int i;
FILE *fp;
char *filename="abc.txt";
if((fp=fopen(filename,"w"))==NULL)
{
printf("can't open the file 1");
return;
}
printf("create file successfully");
for(i=0;i <1000;i++)
{
printf("%d\t",i);
fprintf(fp,"%s\t","aaa");
}
fclose(fp);
}


taot2009 2009-10-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 meipen 的回复:]
记得close啊 光开不闭  那就开一次还不够 ?
[/Quote]
开一次怎么弄呢?不能多次些数据进去的啊?
kouwenlong 2009-10-12
  • 打赏
  • 举报
回复
你在打开文件的时候,先关闭,在打开不行吗?
meipen 2009-10-12
  • 打赏
  • 举报
回复
记得close啊 光开不闭 那就开一次还不够 ?

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧