大家好,我正在开发一个获取后缀表达式并进行计算的程序。

我有两个功能:


将中缀转换为后缀
计算后缀


当我尝试使用1 + 1或(1 + 1)* 1之类的小表达式时,效果很好
但是当我使用所有操作数时,我会感到讨厌

这是示例:
2 * 2/2 + 1-1
得到类似的东西:
222 / * 11- +T_CHECKÖÐ7?█Ã

如果看到的话,表达式就一直正确到'T'

我相信这是一些参数错误,因此我将标题放在此处并返回值

1号)

char* convert(char *infix);
char *post = (char *)malloc(sizeof(char)*tamP);
return post;


2号)

int evaluate(char *postfix)
while (*postfix != '\0')
return result;


呼叫者)

char* post = convert(infix);
result = evaluate(post);


谢谢

最佳答案

您可能没有在convert(char *)函数的'post'末尾(最后一个明智的字符之后)添加'\ 0'字符。这是我能想到的原因之一。
在对字符串进行任何操作之前,请尝试将其设置为“ \ 0”:

memset(post,0,tamP);


应该做。

07-24 09:51
查看更多