2017-05-02 31 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它会起作用。