C语言初学者求助:完善命令行参数运算程序的参数校验逻辑
修正后的C语言命令行运算程序
以下是补全并优化后的代码,满足参数校验、运算执行及错误处理需求:
#include <stdio.h> #include <stdlib.h> int main(int argc, char * argv[]) { int a, b, result; char ch; // 校验命令行参数数量:程序名+3个参数,argc应为4 if (argc != 4) { printf("错误:需传入3个参数(两个数字、一个运算符)\n"); return -9999; } a = atoi(argv[1]); b = atoi(argv[2]); ch = *argv[3]; switch (ch) { case '+': result = a + b; break; case '-': result = a - b; break; case 'x': case '*': result = a * b; break; case '/': if (b == 0) { printf("错误:除数不能为0\n"); return -1; } result = a / b; break; default: printf("错误:非法运算符,支持 +、-、x/*、/\n"); return -2; } printf("运算结果:%d\n", result); return result; }
关键修改说明
- 参数数量校验:通过
if (argc != 4)判断输入参数是否符合要求,不符合则直接返回-9999退出程序。 - 规范main函数:将
void main改为标准的int main,确保能正确返回状态码和运算结果。 - 补充必要头文件:添加
<stdlib.h>,解决atoi函数的编译依赖问题。 - 移除冗余提示:删除原代码中不必要的交互式输入提示,因为参数是通过命令行传入。
- 增强鲁棒性:
- 兼容
*和x两种乘法运算符,适配不同用户输入习惯; - 增加除零校验,避免程序运行时崩溃;
- 处理未知运算符场景,输出明确错误提示。
- 兼容
- 明确返回逻辑:正常运算完成后返回结果,错误场景返回对应错误码,符合程序设计规范。
内容的提问来源于stack exchange,提问作者MM Omaar
相关产品推荐
相关产品推荐

