在循环中使用 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 值是否失败。
我正在尝试使用 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 值是否失败。