我正在尝试使用堆栈进行后缀求值。输出应该采用
2,3,4,+,-,#
以 # 表示表达式结束的格式。问题是允许使用负数,即负数2,3,-10,+,-,#
也是有效输入。我需要一种方法来将数字与字符分开。
int main() {
int num;
char ch;
int ret;
printf("Enter integers or characters separated by commas (e.g., 12,a,34,#):\n");
while (1) {
scanf(" ,");
ret = scanf("%d", &num);
if (ret == 1) {
printf("Input is an Integer: %d\n", num);
if (ret == -1)
break;
} else {
if (scanf(" %c", &ch) == 1) {
// Print an error message for non-integer input
//ch = getchar();
printf("Input is a Character: '%c' (invalid integer)\n", ch);
} else {
printf("End of input\n");
break;
}
}
}
return 0;
}
我面临的问题是,如果输入的是1,2,3,a,b,-1
->,它会正确地将数字识别为数字,a
将识别b
为字符。但是如果我输入的1,2,3,+,-,#,-1
是 作为输入,它会以某种方式接受,
而不是+
,而将 识别为。我不知道为什么会发生这种情况。任何帮助都值得感激。-
#