gpt4 book ai didi

C getline() - 如何处理缓冲区/如何将未知数量的值读入数组

转载 作者:太空狗 更新时间:2023-10-29 15:14:15 29 4
gpt4 key购买 nike

首先,一些背景知识:我试图从外部文件中获取整数列表并将它们放入数组中。我正在使用 getline 逐行解析输入文件:

int lines = 0;
size_t * inputBuffer = (size_t *) malloc(sizeof(size_t));
char * storage = NULL;

我这样调用getline:

getline(&storage, &s, input)

我从 getline 的手册页上听说,如果您提供一个 size_t * 缓冲区,当它超过字节分配时,您可以让 getline 为您调整它的大小。我的问题是,您可以使用此缓冲区做什么?它会包含您使用 getline() 读取的所有项目吗?是从这个缓冲区中读取更简单,还是在将这些整数放入数组时以不同的方式遍历输入?谢谢!

最佳答案

这不是 getline 的正确用法。我强烈建议仔细阅读它的man page .

你可以有这样的代码

FILE *inputfile=fopen("yourinput.txt", "r");
size_t linesiz=0;
char* linebuf=0;
ssize_t linelen=0;
while ((linelen=getline(&linebuf, &linesiz, inputfile)>0) {
process_line(linebuf, linesiz);
// etc
free(linebuf);
linebuf=NULL;
}

顺便说一句,你可能(而且可能应该更好)把

  free(linebuf);
linebuf=NULL;

... 在 while 循环之后(保持行缓冲区从一行分配到下一行),在大多数情况下最好这样做(避免过于频繁的 malloc-s from getline).

注意 getline is in ISO/IEC TR 24731-2:2010 扩展(参见 n1248 )。

关于C getline() - 如何处理缓冲区/如何将未知数量的值读入数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9171472/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com