这个函数的作用是,将表示四则运算的中缀表达式,变成后缀表达式。
void infixToPostfix(char* infix, char* postfix)
{
Stack s;
initStack(&s);
char* p = infix;
char* q = postfix;
while(*p != '\0')
{
...
}
while (!isEmpty(&s))
{
...
}
*(q - 1) = '\0';
}
infix字符串数组,如果给正确的字符串表达式,则程序运行正常。
可有的时候,没有给infix字符串数组赋值,结果全是0x00,结果运行这个函数后,跟紧该函数的其他语句,都没有执行,直接跳出上一层函数了。
想了想,估计问题是出在函数结尾这个*(q-1) = '\0',本来q指向postfix数组的开头,结果,因为给的infix里没有找到字符串或运算符,直接执行这一句了,那么就是将postfi数组的上一个地址里的数据赋值为0x00了。
我好奇的是,为什么造成的结果是跳过接下来的语句,直接返回上一层的函数了呢?
离线
老哥你发现了异常回滚的逻辑了?恭喜了
Try
{
}
catch(Exception &ex)
{
}
可是,c语言没有try catch啊。
离线