我正在创建一个'字符串'
char buffer[BUFFER_SIZE]
但是当它变满时,我想将它连接到一个预先存在的字符串上,但它需要有无限长度并重复这个过程,直到我读完所有数据。
关于我如何做到这一点的任何想法?
答案 0 :(得分:4)
您所描述的是realloc
的替代定义。
答案 1 :(得分:3)
答案 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;
}