2
我會直接點。這是我的代碼,我想從命令行參數中讀取'*'字符,但它不能正常工作。我希望你能解釋我做錯了什麼。如何在命令行中讀取* C
#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在命令行中進行編譯。
我用42,這是*的ASCII代碼,但它沒也不行。感謝您的快速回復。 –
您的終端可能會替換劇目中所有文件的「*」。當我把'./your_program 5 \ * 7' – Missu
這個鏈接發生了什麼[鏈接](https://www.dropbox.com/s/k8amswx0v1entsn/Screenshot%20from%202015-09- 25%2008%3A30%3A58.png?dl = 0) –