我要直截了当地说。这是我的代码,我想从命令行参数中读取“*”字符,但是它不能正常工作。我希望你能解释我做错了什么。
#include <stdio.h>
#include <stdlib.h>
int sum(int, int);
int rest(int, int);
int division(int, int);
int mult(int, int);
int module(int, int);
int main(int argc, char **argv){
char operator;
int number1;
int number2;
int result;
if(argc != 4){
printf("Wrong parameter quantity (%d of 3 needed)\n", argc-1);
return -1;
}
number1 = atoi(argv[1]);
operator = *argv[2];
number2 = atoi(argv[3]);
switch(operator){
case '+':
result = sum(number1, number2);
printf("%d %c %d = %d\n", number1, operator, number2, result);
break;
case '-':
result = rest(number1, number2);
printf("%d %c %d = %d\n", number1, operator, number2, result);
break;
case '/':
result = division(number1, number2);
printf("%d %c %d = %d\n", number1, operator, number2, result);
break;
case '*':
result = mult(number1, number2);
printf("%d %c %d = %d\n", number1, operator, number2, result);
break;
case '%':
result = module(number1, number2);
printf("%d %c %d = %d\n", number1, operator, number2, result);
break;
default:
printf("Error. Wrong operator inserted (%d, %c)\n", operator, operator);
return -2;
}
return 0;
}
int sum(number1, number2){
return number1 + number2;
}
int rest(number1, number2){
return number1 - number2;
}
int division(number1, number2){
return number1 / number2;
}
int mult(number1, number2){
return number1 * number2;
}
int module(number1, number2){
return number1 % number2;
}我知道我的错误在这一行operator = *argv[2];中,但我不知道当'*‘字符通过命令行参数传递时会发生什么。对于所有其他符号(+、-、/、%),一切都正常。我正在Ubuntu中编写这个代码,并与gcc一起在命令行中编译。
发布于 2015-09-25 12:30:56
问题不在你的程序里。这是你怎么称呼的。
UNIX/Linux自动将命令行上的*扩展到当前目录中的所有文件。为了防止这种情况,你需要引用它。
所以不要这么做
./prog 3 * 4这样做:
./prod 3 "*" 4或者这个:
./prod 3 \* 4https://stackoverflow.com/questions/32782109
复制相似问题