读取文件的问题
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,
如果一行只有一个回车符,那你的程序也将会退出.