int getop(char s[])
{
int i, c;
while ((s[0] = c = getch()) == ' ' || c == '\t')
;
s[1] = '\0';
i = 0;
if (isalpha(c)) //math function found.
{
while (isalpha(s[++i] = c = getch()))
;
s[i] = '\0';
if (c != 'EOF')
ungetch(c);
return MATHLIB;
}
if ((c != '.'&&c != '-') &&!isdigit(c)) /*operand found*/
return c;
if (c == '-')
{
if (!isdigit(c = getch()))
{
ungetch(c);
return '-';
}
else
{
ungetch(c);
}
}
if (isdigit(c)) /*number found*/
{
{
while (isdigit(s[++i] = c = getch()))
;
}
if (c == '.')
{
while (isdigit(s[++i] = c = getch()))
;
}
s[i] = '\0';
if (c != EOF)
ungetch(c);
return NUMBER;
}
}
这是我的反向波兰语计算器代码的一部分,该代码处于正常工作状态。 问题是,我试图换行
if ((c != '.'&&c != '-') &&!isdigit(c)) /*operand found*/
到
if ((c != '.'&&c != '-') && (c == '+' || c == '*' || c == '/' || c == '%'))
即使我认为它可以正常工作, 根本没有。 main()中的switch函数根本不会捕获运算符。 最重要的是,每个返回值都将是默认值:printf(“ error”);
我不明白为什么它不起作用,它困扰着我。 有什么建议吗?
答案 0 :(得分:-2)
通常它应该可以工作,但是您应该在调试模式下检查情况。我想这与事实有关,即getch()返回char并将其存储在int中...但是请检查其运行方式