小女学艺不精,想请教各位——
hi_hu 2001-08-16 10:41:30 本程序的目标是读取一文件指定起始位置和终止位置的段落。而该文件是已处理过的,它的每行都定长,为50个字符。
下面的模块能完成这个要求。但问题是当我要读取的段落超过一定的长度(比如1500*51个字节)时,它就报错:"segmentation fault (core dumped)"!———— 怎么办?
(请问这用远指针能解决吗?又怎么调试呢?)
#include <stdio.h>
# include <stdlib.h>
char * abstract(int lineStart, int lineEnd) /*参数是要读取文件的起始、终止位置*/
{
FILE * fp;
int i;
char * outer;
int lineNum;
lineNum = lineEnd - lineStart + 1;
outer = malloc(lineNum * 51 * sizeof(char));
if ((fp = fopen ("./est.esq.new","r"))==NULL)
{
printf ("cannot open est.seq.new\n");
}
fseek (fp, (lineStart - 1)*51l, 0);
fread (outer, lineNum * 51, 1, fp);
outer[lineNum * 51 ] = '\0';
fclose (fp);
return outer;
}