首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

读取文件的有关问题

2012-02-07 
读取文件的问题intmyfgets(char*line,intn,FILE*fr)//从文件中读入一行并把 \n 替换为 \0{intcintcount0

读取文件的问题
int   myfgets(char*   line,   int   n,   FILE   *   fr)
//从文件中读入一行并把 '\n '替换为 '\0 '
{
int   c;
int   count   =   0;
while   (count   <   n-1   &&   (c   =   getc(fr))   !=   EOF   &&   c   !=   '\n ')
{
*(line++)   =   c;
count++;
}
*line   =   '\0 ';
return   count;
}

main中的程序:

char   *   lines[MAX_LINES];
char   line[MAX_LINE_LENGTH];
FILE   *fr;

fr   =   fopen(filename,   "r ");
if(!fr)
{
printf( "open   error\n ");
return   FALSE;
}

while   (   (lines[i]   =   (char   *)calloc(1,MAX_LINE_LENGTH))   &&   (length   =   myfgets(lines[i],   MAX_LINE_LENGTH,   fr))   )
{
                  printf( "%d   %s\n ",i,lines[i]);
i++;
}
fclose(fr);
------------------------------------
想把一个文本文件读入到char   *   lines[MAX_LINES]当中,发现读完第34行的时候(文件有36行),系统就会指示内存出错,其中MAX_LINE_LENGTH   和MAX_LINES都够用.
请高手看看这个程序有什么问题?

[解决办法]
不如把文件内容全读出来,然后替换后,再写回文件,你看会不会比你现在一个字节这样读好些呢
[解决办法]
看了一下,一般情况下正常.
有两点可能是出错的原因:
1.
MAX_LINES,的大小,不知道你定的多大.你定义了 lines[MAX_LINES];数组,但你没有对使用此数组的
的大小进行限制.

2,
如果一行只有一个回车符,那你的程序也将会退出.

热点排行