getline功能:
将文件中的数据读取一行,存储在堆中,形成一个字符串。根据字符串个数分配120个空间,不够就加120,直到能存下为止。返回字符串首地址。并且存储所分配的空间和字符串长度。我将空间分配改成20个,不够再加20,知道能存下字符串为止。
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
ssize_t mygetline(char** line , size_t* len , FILE* fa)
{
int i = 0;
char* ch = NULL;
char* sp = NULL;
*line=malloc(20);
*len=20;
ch = fgets(*line,20,fa);
if(ch==NULL)
return EOF;
for(i=0;i<20;i++)
if((*line)[i]=='\n')
return strlen(*line);
while(ch!=NULL){
*len+=20;
*line=realloc(*line,*len);
sp = *line+*len-21;
ch = fgets(sp,21,fa);
for(i=0;i<20;i++)
if(sp[i]=='\n')
return strlen(*line)