大裤衩子 发表于 2021-5-25 12:37:24

gzgets 读取问题

本帖最后由 大裤衩子 于 2021-5-25 12:48 编辑

利用zlib库中的gzgets 读取一整行内容,没发现我的逻辑错误在哪里{:10_266:} ,输出总是有问题。
代码如下,请求大家帮助,谢谢!{:10_254:}

#include <zlib.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <string.h>

char *getlines(gzFile file)
{
      size_t baselen = 10;
      char *line = (char *)malloc(baselen * sizeof(char));
      if(!line) exit(1);

      while(gzgets(file,line,baselen)!=NULL)
      {
                if(strstr(line,"\n"))   // 判断读入的内容时候含有换行符,此处有'\n',表明完整的读完一行。
                {
                        line='\0';
                        return line;
                }
                else         // 没有读入换行符,只读入了一行的一部分; 此时重新分配内存,再次用gzgets读取, 直到读到换行符为止。                           
                {
                        do
                        {
                              baselen += 10;
                              line = (char *)realloc(line,baselen);
                              if(!line) exit(1);
                              gzgets(file,line,baselen);
                        }while(strstr(line,"\n")==NULL);

                        line='\0';
                        return line;
                }
      }
      line='\0';
      return line;
}

int main(int argc, char *argv[])
{
      gzFile fp=gzopen(argv,"r");
      if(!fp) exit(1);
      int cot =0;
      char *line;
      while((line=getlines(fp))!=NULL && !gzeof(fp))
        {
                cot++;
                printf("line %d\t%s\n",cot,line);
                free(line);
        }
      gzclose(fp);
      exit(0);
}

gcc -Wall -lz w.c -o ww ,输出结果只有最后的部分{:10_250:}


大裤衩子 发表于 2021-5-25 20:32:56

{:10_266:}没人吗?顶一下

Dragon910623 发表于 2021-6-21 15:05:15

向大佬学习

超级玛尼哄 发表于 2021-6-23 15:30:30


向大佬学习

高山 发表于 2021-6-26 18:53:33

输出结果只有最后的部分a

1835575828 发表于 2021-7-4 14:38:27

myqf123 发表于 2022-4-20 17:53:59

{:10_315:}

1050293757 发表于 2022-4-21 13:31:20

{:5_109:}

kkl44stupid 发表于 2022-6-22 19:45:18

{:10_254:}

kkl44stupid 发表于 2022-6-22 19:51:23

{:5_103:}

ExiaGN001 发表于 2022-6-27 09:54:21

你看看是不是函数用的不熟练,如果觉得函数用法有问题可以规避掉自己不会的函数

kkl44stupid 发表于 2022-7-20 19:48:16

{:10_256:}

kkl44stupid 发表于 2022-7-20 19:50:19

{:10_261:}

kkl44stupid 发表于 2022-7-20 20:18:28

{:10_256:}

hornwong 发表于 2022-7-20 23:40:34

{:5_108:}

BGM在逃123 发表于 2022-7-24 06:20:15

{:10_254:}

皇蔡姬 发表于 2022-7-26 00:12:21

向大佬学习

额外减小 发表于 2022-7-26 14:08:22

我的天钠!居然有这么多头文件,

一点点儿 发表于 2022-8-7 17:40:34

向大佬学习{:10_254:}

zhangjinxuan 发表于 2022-8-30 08:07:52

谢谢11楼
页: [1] 2
查看完整版本: gzgets 读取问题