【发布时间】:2010-09-06 23:25:21
【问题描述】:
所以,我有以下代码 (C):
char c = getc(in);
if (c == '(')
...
if (c == '%')
...
if (isdigit(c))
{
int n;
ungetc(c, in);
scanf("%i", &n);
...
}
当我从标准输入读取输入时,一切都很好,但当从文件读取输入时,对scanf 的调用不会终止。
我在调用周围添加了一些代码,以查看调用 scanf 之前发生了什么。一个这样的例子是
c = '0'-
c后面的字符是)
ungetc 之后缓冲区是否没有刷新?可能会发生什么,当输入为stdin 时它可以正常工作,但当它是文件时却不行? (我对 C 中的 IO 不太熟悉)。
编辑:应该使用fscanf...男孩是我的脸红。
【问题讨论】:
-
将
getc的结果存储在char变量中总是错误的。getc返回int。不过,这与您的问题是分开的。