我正试图从终端读取几行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);
}
}
答案 0 :(得分:3)
fflush(stdin);
是undefined behaviour。不要使用它。
我认为,您的问题是您输入了更多len
个字符,因此第二次调用fgets()
会读取第一个调用留下的字符。
只需充分增加len
即可。
您还应该检查fgets()
的返回值是否失败。