【发布时间】:2020-01-01 00:37:43
【问题描述】:
我是 c 新手,正在编写一个 switch 函数,只要传入的字符串是 )、}、],当弹出的表达式不是匹配的左括号时,它就会返回 false。 (是的,这是平衡括号的问题......)
我可以肯定,分段错误只来自这个 switch 语句,没有它,代码也能正常工作。
我的代码是:
switch (expr[i])
{
case ')': if (pop(&Stack) == '{' || pop(&Stack) =='[') {
return 0;}
break;
case '}': if (pop(&Stack) == '(' || pop(&Stack) =='[') {
return 0; }
break;
case ']': if (pop(&Stack) == '{' || pop(&Stack) =='(') {
return 0; }
break;
}
它给了我“分段错误:11”。
【问题讨论】:
-
什么是
expr、i、pop和Stack? -
^ 和调试器可能会指出段错误的原因。
-
发布的代码为每个 switch 案例调用了两次“pop()”。强烈建议不要修改“堆栈”。
标签: c segmentation-fault switch-statement text-segmentation