“ungetch”如何运作?

时间:2014-10-06 18:58:18

标签: c

我到处搜索,但我找不到答案!我正在使用他们称之为getop的函数从K& R C书籍开始练习。当它从输入中查看下一个字符并看到它不是数字时,在调用unget时字符会被存储在何处?我可以编译并运行代码,所以我知道它有效,我只是想知道字符存储在哪里。

int getop(char s[])
{
    int i, c;

    while ((s[0] = c = getch()) == ' ' || c == '\t')
        ;
    s[1] = '\0';
    if (!isdigit(c) && c != '.')
        return c; /* not a number */
    i = 0;
    if (isdigit(c)) /*collect integer part*/
        while (isdigit(s[++i] = c = getch()))
            ;
    if (c == '.') /*collect fraction part*/
        while (isdigit(s[++i] = c = getch()))
            ;
    s[i] = '\0';
    if (c != EOF)
        ungetch(c);
    return NUMBER;
}

1 个答案:

答案 0 :(得分:0)

它并没有真正窥视,它将char读入流的缓冲区。在无缓冲的流上,或者在打开文件或搜索后您没有阅读任何内容时,ungetc()无法保证正常工作。