免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: iwinux
打印 上一主题 下一主题

[函数] 帮忙看看这个getLine函数 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2006-08-02 22:46 |只看该作者
修改后的代码


  1. /*reference:The Art and Science of C*/
  2. int readLine(FILE * infile, char ** line) {
  3.         char * tmp, *test;
  4.         int c, n = 0, size = BUFSIZE;

  5.         if (*line) {
  6.                 free(*line);
  7.         }

  8.         *line  = (char *) malloc(size + 1);

  9.         if (!*line) {
  10.                 return 0;
  11.         }

  12.         while ((c = fgetc(infile)) != '\n' && c != EOF) {
  13.                 if (n == size) {
  14.                         size *= 2;
  15.                         //tmp = (char *) malloc(size + 1);
  16.                         tmp = (char *) realloc(*line, size + 1);
  17.                        
  18.                         if (!tmp) {
  19.                                 //line = 0;
  20.                                 //return 0;
  21.                                 return n;
  22.                         }
  23.                        
  24.                         //strncpy(tmp, *line, n);
  25.                         //free(*line);
  26.                         test = *line;
  27.                         *line = tmp;
  28.                 }
  29.                 *(*line + n) = c;
  30.                 n++;
  31.         }

  32.         if (n == 0 && c == EOF) {
  33.                 *line = NULL;
  34.                 free(*line);
  35.                 return 0;
  36.         }
  37.        
  38.         *(*line + n)= '\0';
  39.         tmp = 0;

  40.         return n;
  41. }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP