【发布时间】:2012-07-07 13:59:37
【问题描述】:
我无法理解我的程序的行为。它调用scanf,然后是ungetc,然后是printf。
我无法理解输出行为背后的原因。 这是代码。如果有人澄清了这种行为,将会很有帮助。
int main()
{
int n=0;
scanf("%d",&n);
ungetc(n,stdin);
printf("%d\n",n);
return 0;
}
在 gcc 编译器和 linux 平台中的输出: 首先,如果我给 90,那么它会等待另一个数字,在我给另一个数字之后,它会打印 90。
【问题讨论】:
-
在什么时候等待另一个数字?你为什么使用ungetc?
-
与
ungetc无关,是扫描格式。删除\n并立即打印。 -
在我输入第一个说 90 之后,它会等待另一个输入。当我输入另一个数字时,它会打印 90。我只是在尝试使用 ungetc..只是为了学习目的
-
哦..是的..当我删除 \n 它工作正常。但是在 ungetc 合法之后使用 n 吗?不是 n 值发送回缓冲区吗?
-
@vindhya 不,变量保持不变。
ungetc接收变量的值,而不是地址,因此无法更改值。
标签: c