我是C编程新手,目前我正在学习while
循环。我的问题是,while
循环必须继续,直到用户希望终止while
循环。但是,当我运行我的代码似乎scanf()
只有一次扫描输入和while
循环后终止,我不知道为什么。C编程:while循环中的scanf只读取一次输入,然后终止
int main(void) {
setbuf(stdout, NULL);
char answer = 'y';
while (answer == 'y') {
printf("continue? (y/n): ");
scanf("%c", &answer);
}
return 0;
}
为什么使用setbuf以(标准输出,NULL)' – Brandin 2014-10-01 17:59:19
林的Windows用户的意图。当在Windows中同时使用printf和scanf时,c中的缓冲区有问题。为了让printf立即输出,你需要在每次printf后每次写入fflush(stdout)。如果你在开始时写setbuf(stdout,NULL),你不需要在每个printf之后写fflush(stdout)。 – Kim 2014-10-01 18:18:09
是的,它可能在某些环境中是一个问题,但是你拥有它的方式可能实际上并不能解决所有问题,你不应该试试'setvbuf(stdout,NULL,_IONBF,0);' - 模式标志是什么改变了流的行为方式,例如评论这里http://www.eclipse.org/forums/index.php/t/168233/ – Brandin 2014-10-01 18:25:32