繁体   English   中英

使用 getchar() 读取输入的问题

[英]Problem with reading input with getchar()

我有以下代码(s1 和 s2 是堆栈)。 如果字符是运算符,则存储在堆栈 s2 中,如果它是从 0 到 9 的数字,则存储在 s1 中。

int ch;
ch = getchar();

while((ch=getchar())!='\n')
{
    print("%d\n", ch);

    if(ch>47 && ch<58)
    {
        push((int)ch - (int)'0', &s1);
    }
    else
    {

        push(ch, &s2);
    }
}

问题是如果输入是“+12”,那么 1 和 2 的 ASCII 码会被打印出来,但“+”运算符的 ASCII 码不是。

但是,如果输入是“++12”,则打印 '+' 之一的 ASCII 代码,然后打印 1 和 2。

那么这段代码是如何工作的呢?

您正在while循环之前进行初始getchar()调用,因此您总是会错过第一个输入。
尝试删除它,它应该可以工作!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM