[英]How to read an argument in from command line into a double?
This program is first forked then run by execlp, it's calling program passes in two numbers, a power and a base. 这个程序首先分叉然后由execlp运行,它的调用程序传递两个数字,一个幂和一个基数。
int main(int argc, char *argv[])
{
int pid = getpid();
printf("Calculator Process[%d]: started\n",pid);
double base, power;
sscanf(argv[1],"%d",&base);
sscanf(argv[2],"%d",&power);
double number = pow(base,power);
printf("Calculator Process[%d]: %d ^^ %d == %d\n",pid,base,power,number);
printf("Calculator Process[%d]: exiting\n",pid);
return 1;
}
Lets say I pass into it base 3, power 5. This is what I get: 让我们说我进入它的基础3,力量5.这就是我得到的:
base = 4263 -- this also happens to be the PID. power = -1 raised to power: 714477568
Calling line: 通话线路:
execlp("./calculator","./calculator",argv[1],argv[2],(char*)0);
When I print the argvs, I get their value (as a char*, but casting fails). 当我打印argvs时,我得到它们的值(作为char *,但是转换失败)。
Any ideas why I can't get the values to be correctly read in? 任何想法为什么我不能正确读入值?
Either read double: 阅读双倍:
double base, power;
sscanf(argv[1],"%lf",&base);
sscanf(argv[2],"%lf",&power);
Or scan into integers: 或者扫描成整数:
int base, power;
sscanf(argv[1],"%d",&base);
sscanf(argv[2],"%d",&power);
A quick adjustment of your code should do it: 快速调整代码应该这样做:
int main(int argc, char *argv[])
{
int pid = getpid();
printf("Calculator Process[%d]: started\n",pid);
double base, power;
base = atof(argv[1]);
power = atof(argv[2]);
double number = pow(base,power);
printf("Calculator Process[%d]: %f ^^ %f == %f\n",pid,base,power,number);
printf("Calculator Process[%d]: exiting\n",pid);
return 1;
} }
atof()
atof()
%f
or they won't display right in your output! %f
否则它们将无法在输出中显示!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.