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

时间:2016-12-20 10:58:32

标签: c for-loop stdin fgets

我正试图从终端读取几行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);
        }
}

1 个答案:

答案 0 :(得分:3)

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

我认为,您的问题是您输入了更多len个字符,因此第二次调用fgets()会读取第一个调用留下的字符。 只需充分增加len即可。

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