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

C语言如何从用户输入的算术表达式中识别并打印'+'运算符

现有代码问题梳理

  • 函数定义、调用参数不匹配:inputforCalculator、doArithmeticOperations定义时无参数,调用时却传入了参数,且main中使用的numberArray2没有定义
  • gets()属于已废弃的不安全函数,存在缓冲区溢出风险,建议替换为fgets()
  • 运算符识别逻辑完全失效:局部变量operator未赋值,也没有遍历输入字符串的每个字符判断是否为运算符,循环第一次执行就触发break,没有完成遍历逻辑
  • 声明为int返回类型的函数没有对应的return返回值
  • 没有覆盖-、*、/等其余常见算术运算符的判断逻辑

修正后可运行代码

#include<stdio.h>
#include<string.h>

char numberArray1[50];

// 提前声明函数参数
void doArithmeticOperations(char *inputStr);
void inputforCalculator();

int inputforCalculator(){
    printf("Calc>");
    // 替换gets为fgets避免缓冲区溢出风险
    fgets(numberArray1, sizeof(numberArray1), stdin);
    // 清除fgets读取到的末尾换行符
    numberArray1[strcspn(numberArray1, "\n")] = '\0';
    doArithmeticOperations(numberArray1);
    return 0;
}
 
void doArithmeticOperations(char *inputStr){
    int len = strlen(inputStr);
    char foundOp = 0;
    for(int i=0; i<len; i++){
        char curr = inputStr[i];
        // 判断当前字符是否为算术运算符
        if(curr == '+' || curr == '-' || curr == '*' || curr == '/'){
            foundOp = curr;
            break;
        }
    }
    if(foundOp){
        printf("Operator present is: '%c'\n", foundOp);
    }else{
        printf("Invalid Input.\n");
    }
}

int main(){
    inputforCalculator();
    return 0;
}

测试效果

输入123456+123456时,输出为Operator present is: '+';输入无运算符的纯数字内容时,输出Invalid Input.。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 00:57:04