scanf()但数据类型的任意顺序

scanf()但数据类型的任意顺序,c,stack,C,Stack,我正在创建一个计算后缀表达式的程序,例如12 2+3*表示(12+2)*3=42。我想将数字推到堆栈中,如果输入不是数字,则弹出两个数字。但我似乎不知道如何检查输入是整数还是字符。我试过了 char x; scanf("%c", &x); 并使用isdigit()检查它是否是一个数字,但问题是当数字有多个数字时。我如何解决这个问题?如果是数字,那么你可以继续按数字读取,直到你找到一个不是数字的字符。如果是数字,那么你将累加器乘以10,然后加上当前数字。我会读整行,然

我正在创建一个计算后缀表达式的程序,例如
12 2+3*
表示
(12+2)*3=42
。我想
数字推到堆栈中,如果输入不是数字,则
弹出两个数字。但我似乎不知道如何检查输入是整数还是字符。我试过了

char x;
scanf("%c", &x);

并使用
isdigit()
检查它是否是一个数字,但问题是当数字有多个数字时。我如何解决这个问题?

如果是数字,那么你可以继续按数字读取,直到你找到一个不是数字的字符。如果是数字,那么你将累加器乘以10,然后加上当前数字。我会读整行,然后自己解析。依次检查每个字符。不是对你的数字问题的回答,只是一般性的问题我如何把数字组合成一个整数?我是否需要创建一个int数组来存储数字的位数?将累加器乘以10,然后将数字相加。如果它不是一个数字,则按下累加器并将其归零,以备下次使用。如果它是一个数字,则可以继续按数字读取,直到找到一个不是数字的字符。如果它是一个数字,则将累加器乘以10,并将当前数字相加。我将读取整行内容,然后自己解析它。依次检查每个字符。不是对你的数字问题的回答,只是一般性的问题我如何把数字组合成一个整数?我是否需要创建一个int数组来存储数字的位数?将累加器乘以10,然后将数字相加。如果不是数字,则按下累加器并将其归零,以备下次使用。