簡體   English   中英

c中大小不受限制的字符串緩沖區

[英]unlimited size String buffer in c

我正在創建一個“字符串”

char buffer[BUFFER_SIZE]

但是,當它滿了時,我想將其連接到一個預先存在的字符串上,但是它需要具有無限的長度,並重復此過程,直到我讀取了所有數據。

關於如何執行此操作的任何想法?

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

您需要使用mallocrealloc動態分配內存。

我過去曾使用過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;
}

你可以嘗試使用realloc

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

您將根據BUFFER_SIZE獲得動態內存量

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM