如何解决在C中循环的每个用户输入过程之后,是否应该刷新?
#include <stdio.h>
#include <stdlib.h>
int main(void) {
char text[256];
while (1) {
puts("Text?");
fgets(text,sizeof(text),stdin);
fflush(stdout); // should you flush everytime?
}
return 0;
}
例如,如果要创建用户输入并在不中断的while循环中打印,是否应该冲洗?还需要冲洗标准输入吗?
如果您也愿意使用stderr,在这种情况下是否还需要冲洗stderr?
解决方法
仅当缓冲区中有待处理的字节时,即text
中没有换行符时,才需要刷新。无论如何,您应该刷新的是stdin
(而不是stdout
):
fgets(text,sizeof(text),stdin);
// fflush(stdout); // should you flush everytime? --> NOPS
if (strchr(text,'\n') == NULL)
{
int c;
// Flush stdin
while (((c = fgetc(stdin)) != '\n') && (c != EOF));
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。