int main (int argc, char *argv[])
{
int a, b, quo, rest;
void division(int dividendo, int divisor, int *ptr_quociente, int *ptr_resto)
{
*ptr_quociente=dividendo/divisor;
*ptr_resto=dividendo%divisor;
}
if(argc=3)
{
a= atoi(argv[1]);
b= atoi(argv[2]);
division(a,b,&quo,&rest);
printf(" %d and %d n",quo,rest);
}
else if (argc=1)
do
{
printf("type two int numbers:n");
scanf("%d %d", &a, &b);
division(a,b,&quo,&rest);
printf(" %d and %d n",quo,rest);
} while(a!=0);
}
如果我这样做:
./program.c 12 6
它有效,但如果我这样做:
./program.c
我遇到分段错误,为什么?
if(argc=3) should be if(3 == arc) //notice '=='
这就是为什么保持constant
LHS
总是个好主意,这将避免意外分配
与arc=1
相同
另外,我将本地函数定义移到了main之外。
void division(int dividendo, int divisor, int *ptr_quociente, int *ptr_resto)
{
*ptr_quociente=dividendo/divisor;
*ptr_resto=dividendo%divisor;
}
int main (int argc, char *argv[])
{
...
}
编辑:在阅读了Paxdiablo和Shafik的评论后,我开始知道大多数现代编译器都会警告'='
状况。您可以简单地编写if(argc == 3)
,而不是在LHS
上放置常量。