改写文件问题
#include <stdio.h>
#include <string.h>
void main( void )
{
FILE *stream;
FILE *file;
FILE *p_file;
char line[200] = "\0";
char strFinal[200] = "\0";
char *p = NULL;
char *p_Final = NULL;
int Num = 0;
int i = 0;
if( (stream = fopen( "C:\\original", "r+t" )) != NULL )
{
while( !feof( stream ) )
{
if( fgets( line, 500, stream ) == NULL)
{
// printf( "fgets error\n" );
break;
}
else
{
p = &line[0];
while(*p!='\n')
{
p++;
}
*p++ = ',';
*p++ = '0';
*p++ = 's';
*p++ = 's';
*p++ = '\n';
*p = '\0';
if( (file = fopen( "C:\\Final", "a+" )) != NULL )
{
fputs(line, file);
}
}
}
printf("%s \n", Num);
fclose( stream );
}
}
上面的代码从original里按行读出文件
然后在每一行后面加上,0ss
写入Final
但是if( (file = fopen( "C:\\Final", "a+" )) != NULL )
这一句执行时,有时候会发生打不开Final的错误
怎么回事,
难道是打开的次数太频繁了??
有什么好的解决方法???
问题点数:30、回复次数:7Top
1 楼hanyixin(怡)回复于 2003-12-03 12:58:33 得分 10
close了再open撒
Top
2 楼zhangfjj(小张)回复于 2003-12-03 13:15:23 得分 5
上面的代码从original里按行读出文件
然后在每一行后面加上,0ss
写入Final
但是if( (file = fopen( "C:\\Final", "a+" )) != NULL )
这一句执行时,有时候会发生打不开Final的错误
-------------------
有个办法,生成一个临时文件,读出的每一行,加上字符后,写入临时文件,做完以后,再写入原来的文件,你的程序会出问题的,以两种状态打开文件,同时对该文件进行读写
Top
3 楼yg_xh(果皮)回复于 2003-12-03 13:17:08 得分 5
if( (file = fopen( "C:\\Final", "a+" )) != NULL )
在循环中open了多次,没有对应打开的fclose语句Top
4 楼dislimit(风飘雪影)回复于 2003-12-03 14:28:57 得分 5
在while循环中文件打开了多次,有没有及时关闭呢?Top
5 楼saintshi(背叛自己)回复于 2003-12-03 18:44:11 得分 5
我试过win2000最多能打开128个文件句柄之后就再打开文件就会失败,你没关闭文件句柄所以循环几次以后就大不开文件了Top
6 楼zhouqingyuan(浪帆)回复于 2003-12-03 19:24:17 得分 0
开了东西在再开之前一定要关的。否则总会出问题的。Top
7 楼wshcdr(dd)回复于 2003-12-04 12:57:09 得分 0
还有一个问题
这个方法速度太慢
如果遇到一个有几十万条记录的文件就要花特别长的时间来处理
不知道大家有没有什么好的办法改进?Top




