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
相关产品推荐
相关产品推荐

