如何从命令行读取参数到双精度?

Sno*_*Mac 5 c

这个程序首先分叉然后由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;
}
Run Code Online (Sandbox Code Playgroud)

让我们说我进入它的基础3,力量5.这就是我得到的:

base = 4263 -- this also happens to be the PID. 
power = -1 
raised to power: 714477568

通话线路:

execlp("./calculator","./calculator",argv[1],argv[2],(char*)0);
Run Code Online (Sandbox Code Playgroud)

当我打印argvs时,我得到它们的值(作为char*,但是转换失败).

任何想法为什么我不能正确读入值?

per*_*eal 9

阅读双倍:

double base, power;
sscanf(argv[1],"%lf",&base);
sscanf(argv[2],"%lf",&power);
Run Code Online (Sandbox Code Playgroud)

或者扫描成整数:

int base, power;
sscanf(argv[1],"%d",&base);
sscanf(argv[2],"%d",&power);
Run Code Online (Sandbox Code Playgroud)

  • 对代码中的简单拼写错误的正确处理是修复它,而不是对它进行暗示. (2认同)