C: getline 没有读取完整文件

C: getline does not read the full document

我需要用 C 编写一个程序,用 getline 读取一个大 XML 文件,问题是大约 30 亿行中只有 2085 行被读取。在以下代码中出现问题。

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>

int main()                                          
{
    size_t l = 0;
    char *line;

    line = NULL;
    while (getline(&line,&l,stdin)>0) {

        getline(&line,&l,stdin);
        printf("%s\n", line);
        printf("%i\n", i);

        free(line);
        line = NULL;
    }
    return 0;
}

我的第一个目标是使用 printf 显示线条,这样我就可以使用它了。 从 2080 到 2090 的任何一行都不为空。 如果我将 loop-condition 更改为 >=0 大约 80.000 行被读入,如果我将 printf 注释掉,大约 130.00 行。但是我得到了一个分段错误。在这种情况下我真的不知道如何解决。 我正在使用 Visual Studio 代码编辑和 MYSYS2 MinGW 运行 代码,在 Windows 11。 首先找不到getline函数,我通过Copy-Pastingthis页的getline代码解决了,因为#include header好像不行。

  1. 你在阅读 while 中的行时每隔一行跳过,然后在 while 正文中再次阅读它
  2. 您有内存泄漏(与第 1 点相同的原因)
int main(void)                                          
{
    size_t l = 0;
    ssize_t retVal;
    char *line;

    line = NULL;
    do 
    {
        if((retVal = getline(&line,&l,stdin)) != -1)
        {
            printf("Buff_size:%zu Line_length: %zd Line:\"%s\"\n", l, retVal, line);

        }
    }while(retVal != -1);
    free(line);
    return 0;
}