【发布时间】:2016-09-04 02:35:54
【问题描述】:
我尝试用 C 创建一个简单的计算器。数字和运算符应该是参数。我已经有了主函数和计算函数:
主要:
int main(int argc, char *argv[]){
long result;
long number1 = strtol(argv[1], NULL, 10);
long number2 = strtol(argv[3], NULL, 10);
result = calculate(number1, number2, argv[2]);
printf("Result: %li", result);
return 0;
}
计算:
long calculate(long number1, long number2, char operator){
long result;
switch(operator){
case '+': result = number1 + number2; break;
case '-': result = number1 - number2; break;
}
return result;
}
当我这样启动程序时:
./calc 1 + 2
结果是0。我认为operator参数有问题,因为当我写'+'而不是argv[2]时它可以工作。但我不知道如何修复它,它也适用于参数。
【问题讨论】:
-
calculate(number1, number2, argv[2]);-->calculate(number1, number2, *argv[2]); -
编译器警告应该被视为错误!如果您的编译器没有发出警告,请启用它们。如果它仍然没有警告,请将其丢弃并获取现代编译器。
-
哈哈。此外,为您的
switch指定一个default部分 -
用
argv[2][0]而不是argv[2]调用函数calculate。
标签: c pointers parameters calculator argv