在C语言中,我想接受用户的输入,但是我不知道它持续了多长时间。我想我应该使用malloc()
来设置文本数组的长度:
char *text = NULL;
text = malloc(sizeof(input))
但是,在使用fgets()
将输入存储到数组的同时,如何做呢?
fgets(text, sizeof text, stdin)
答案 0 :(得分:1)
由于调用fgets
而存储的字符串如果可以容纳在缓冲区中,则将包含换行符。如果读取的字符串以换行符结尾,则说明您已经有一整行。如果没有,您知道需要阅读更多。
因此,首先使用malloc
分配一定大小的缓冲区。然后使用fgets
填充缓冲区。如果缓冲区中没有换行符,请使用realloc
进行扩展,然后再次使用fgets
,从您停下来的偏移处开始。
或者,如果您使用的是POSIX系统(例如Linux),则可以使用getline
来为您完成所有这些工作。