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好像不行。
- 你在阅读
while
中的行时每隔一行跳过,然后在 while 正文中再次阅读它
- 您有内存泄漏(与第 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;
}
我需要用 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好像不行。
- 你在阅读
while
中的行时每隔一行跳过,然后在 while 正文中再次阅读它 - 您有内存泄漏(与第 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;
}