在之前的博客中 https://www.cnblogs.com/mmtinfo/p/13036039.html 读取一行的getline()函数是GNU 的扩展函数。
这里用自定义函数实现这个功能,从文件中读取整行,不论一行多长,动态分配内存。
1 #include <stdlib.h> 2 #include <stdio.h> 3 #include <string.h> 4 5 char *readLine(FILE *file){ 6 if(file == NULL){ 7 exit(1); 8 } 9 /* malloc linebuffer */ 10 int baseLen = 256; // 初始长度设置256字符 11 char *lineBuf = (char *)malloc(sizeof(char) * baseLen); 12 if(lineBuf == NULL){ 13 exit(1); 14 } 15 16 int ch,index=0; 17 while((ch=fgetc(file)) != 10 && ch != EOF){ // ASCII 10 => " " 18 lineBuf[index] = ch; 19 index++; 20 21 if(index == baseLen){ 22 baseLen += 256; 23 lineBuf = (char *)realloc(lineBuf, baseLen); // 内存不足时每次再重新分配256字符空间 24 if(lineBuf == NULL){ 25 exit(1); 26 } 27 } 28 } 29 lineBuf[index] = '