大家好,我正在开发一个获取后缀表达式并进行计算的程序。
我有两个功能:
将中缀转换为后缀
计算后缀
当我尝试使用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);
应该做。