字符串数组,只要输入

时间:2019-06-14 20:29:27

标签: c arrays c-strings

在C语言中,我想接受用户的输入,但是我不知道它持续了多长时间。我想我应该使用malloc()来设置文本数组的长度:

char *text = NULL;
text = malloc(sizeof(input))

但是,在使用fgets()将输入存储到数组的同时,如何做呢?

fgets(text, sizeof text, stdin)

1 个答案:

答案 0 :(得分:1)

由于调用fgets而存储的字符串如果可以容纳在缓冲区中,则将包含换行符。如果读取的字符串以换行符结尾,则说明您已经有一整行。如果没有,您知道需要阅读更多。

因此,首先使用malloc分配一定大小的缓冲区。然后使用fgets填充缓冲区。如果缓冲区中没有换行符,请使用realloc进行扩展,然后再次使用fgets,从您停下来的偏移处开始。

或者,如果您使用的是POSIX系统(例如Linux),则可以使用getline来为您完成所有这些工作。