我不明白这个程序是如何工作的?
char c;
int i;
for(i=1;i<=5;i++)
{
scanf("%c",&c);
printf("%c",c);
ungetc(c,stdin);
}
程序的输出 is- 第一次输入的字符被打印 5 次。
a
aaaaa
根据SO post putc和ungetc有什么区别? ungetc
将一些东西放回输入缓冲区。
所以在这个程序中,在第一次迭代期间scanf()
接受来自键盘的输入并printf()
显示它,然后ungetc()
将相同的字符推回输入缓冲区。
但是在第二次迭代期间,没有输入被接受,所以我猜printf()
会打印被 . 推入输入缓冲区的字符ungetc()
。
有人可以清楚地解释这个程序是如何工作的吗?