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