嘿伙计们,我正在研究一个获得后缀表达式并计算它的程序..
我有两个功能:
当我尝试小的表达式,如1 + 1或(1 + 1)* 1时,它工作正常 但是当我使用所有操作数时,我会得到一些令人讨厌的东西,
以下是示例: 2 * 2/2 + 1-1 获得类似的东西: 222 / * 11- +T_CHECKÖÐ7?█Ã
如果你看到,表达是正确的,直到'T'
我认为这是一些参数错误,所以我会把标题和返回值放在这里
第一)
char* convert(char *infix);
char *post = (char *)malloc(sizeof(char)*tamP);
return post;
第二)
int evaluate(char *postfix)
while (*postfix != '\0')
return result;
呼叫者)
char* post = convert(infix);
result = evaluate(post);
由于
答案 0 :(得分:4)
那种奇怪的字符串看起来更像是缓冲区溢出错误。您可能会覆盖null终止符,因此当打印(或稍后使用)字符串时,它会一直运行直到找到它,检查随机程序内存直到它到达那里。
检查所有字符串操作是否正确。
答案 1 :(得分:1)
你可能没有在convert(char *)函数的'post'末尾(在最后一个敏感字符之后)添加'\ 0'字符。这是我能想到的一个原因。 尝试将完整的字符串设置为'\ 0'之前:
memset(post, 0, tamP);
应该这样做。