c中无限大小的字符串缓冲区

时间:2012-02-26 15:00:08

标签: c string char buffer

我正在创建一个'字符串'

char buffer[BUFFER_SIZE]

但是当它变满时,我想将它连接到一个预先存在的字符串上,但它需要有无限长度并重复这个过程,直到我读完所有数据。

关于我如何做到这一点的任何想法?

4 个答案:

答案 0 :(得分:4)

您所描述的是realloc的替代定义。

答案 1 :(得分:3)

您需要使用mallocrealloc动态分配内存。

答案 2 :(得分:2)

您可以尝试使用realloc

char *temp = NULL;
char *buffer = (char*) realloc (temp, BUFFER_SIZE*sizeof(char));

您将获得基于BUFFER_SIZE

的动态内存量

答案 3 :(得分:2)

我过去曾使用 open_memstream 来实现这一目标。

此函数打开一个用于写入缓冲区的流。使用malloc动态分配缓冲区并根据需要增长。关闭流后,此缓冲区是您负责使用free或realloc清理的。

https://www.gnu.org/software/libc/manual/html_node/String-Streams.html

#include <stdio.h>

int
main (void)
{
  char *bp;
  size_t size;
  FILE *stream;

  stream = open_memstream (&bp, &size);
  fprintf (stream, "hello");
  fflush (stream);
  printf ("buf = `%s', size = %zu\n", bp, size);
  fprintf (stream, ", world");
  fclose (stream);
  printf ("buf = `%s', size = %zu\n", bp, size);

  return 0;
}