簡體   English   中英

如何從命令行讀取參數到雙精度?

[英]How to read an argument in from command line into a double?

這個程序首先分叉然后由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;
}

讓我們說我進入它的基礎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);

當我打印argvs時,我得到它們的值(作為char *,但是轉換失敗)。

任何想法為什么我不能正確讀入值?

閱讀雙倍:

double base, power;
sscanf(argv[1],"%lf",&base);
sscanf(argv[2],"%lf",&power);

或者掃描成整數:

int base, power;
sscanf(argv[1],"%d",&base);
sscanf(argv[2],"%d",&power);

快速調整代碼應該這樣做:

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; 

}

  1. 要將char數組轉換為數字,可以使用atof()
  2. 不要忘記將printf更新為double %f否則它們將無法在輸出中顯示!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM