You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言字符输入判断异常:输入括号却触发退出逻辑求助

问题原因与修复方案

你的代码问题出在if条件的逻辑运算符使用错误:

原代码里用了||(逻辑或),这意味着只要data不等于任意一个合法括号,整个条件就会成立。比如当你输入(时,data != ')'是真,||连接的条件只要有一个为真就整体为真,所以必然会进入退出分支。

正确的逻辑应该是:当data同时不等于所有合法括号时,才执行退出。这时候需要用&&(逻辑与)来连接所有不等于的判断。

修正后的代码如下:

printf("Enter only parenthesis to arr or anything else to exit\n");
     
scanf(" %c", &data);

if (data != '(' && data != ')' && data != '[' &&
    data != ']' && data != '{' && data != '}')
{
    printf("\nExit scanning \n");
    return;
}

如果想用getchar()替代scanf,逻辑是完全一致的,只需把输入部分换成data = getchar();,同时可以额外处理输入缓冲区的换行符(比如用getchar()吃掉多余的换行),但核心还是要修正if条件的逻辑运算符。

内容的提问来源于stack exchange,提问作者Trubadurpoman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 03:25:46