2017-05-02 26 views
-4
main(int argc,char **argv) 
{ 
int n1,n2,n3; 
if(argc!=4) 
{ 
printf("Usage:./cal 10+20\n"); 
return; 
} 
n1=atoi(argv[1]); 
n2=atoi(argv[3]); 
switch(argv[2][0]) 
{ 
case '+': n3=n1+n2; 
       printf("n3=%d\n",n3); 
       break; 
case '*': n3=n1*n2; 
       printf("n3=%d\n",n3); 
       break; 
case '-': n3=n2-n1; 
       printf("n3=%d\n",n3); 
       break; 
case '/0': n3=n1/n2; 
       printf("n3=%d\n",n3); 
default: printf("unknown option...\n"); 
} 
} 

將輸入提供給程序後。它不提取輸出。只有它正在執行「if(argc!= 4)」。爲什麼???使用C中的命令行參數計算器

+3

因爲像'./cal 10 + 20'這樣的輸入不滿足'f(argc!= 4)',很簡單。 –

+1

HInt:嘗試打印'argv [1]',:) –

+1

用'./cal 10「+」20'調用程序 –

回答

1

在你給的使用例子:./cal 10+20你只有2個參數:

argv[0]./cal

argv[1]10+20

如果你想有4個參數,你需要調用它像這樣,用空格分隔你的論點:

./cal 10 + 20

0

因爲你給了像./cal 10 + 20這樣的參數,所以編譯器只需要兩個參數argv [0] = ./cal argv [1] = 10 + 20這就是爲什麼如果(argc!= 4)是如果{...}代碼正確,它正在執行。試着給./cal 10 + 20它會起作用。