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

时间:2014-05-04 20:23:03

标签: c

我想从用户的大小为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);  
  }

2 个答案:

答案 0 :(得分:3)

请勿使用更糟糕的选项替换fgets()fgets()没有限制。

#include <stdio.h>
#include <stdlib.h>

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

答案 1 :(得分:0)

可能存在fgets()具有1024字节限制的实现;然而,这不是我以前见过的。

替代方案可能是fread()。