fgets限制为1024字节 – 我可以使用什么?

我想从用户的大小为16000bytes的输入字符串中读取。 fgets只读取1024个字节。 我可以用什么呢? 我正在写c,这是我现在的代码。 是不是我没有使用malloc?

 char str[16392]; while(fprintf(stderr, "> "), fgets(str, 16392, stdin), !feof(stdin)) { } 

而且,readline似乎有效。

  while(line = readline("> "), !feof(stdin)) { printf("You entered: %s\n", line); free(line); } 

不要用更糟糕的选项替换fgets()fgets()没有限制。

 #include  #include  char *buffer; size_t size; size = 10000000; /* 10m */ buffer = malloc(size); if (!buffer) /* error */; if (fgets(buffer, size, stdin) == NULL) /* error */; // ... free(buffer); 

也许有一种实现,其中fgets()具有1024字节的限制; 然而,这不是我以前见过的。

替代方案可能是fread()。