在循环中使用 fgets 从终端读取

Using fgets in a loop to read from terminal

我正在尝试使用 fgets 从终端读取几行文本。问题是它只读了一行就停止了。我试过刷新缓冲区并使用 getchar 吸收换行符,但它仍然没有用。

#include <stdio.h>

int main()
{
        int count = 2;
        int len = 5;
        char str[count][len];

        for(int i = 0; i < count; i++)
        {
                fgets(str[i], len, stdin);
                fflush(stdin);
        }
}

fflush(stdin);undefined behaviour。不要使用它。

我认为,您的问题是您输入了更多 len 个字符,因此对 fgets() 的第二次调用读取了第一次调用留下的字符。 只要增加 len 就足够了。

您还应该检查 fgets() 的 return 值是否失败。