How to read an argument from the command line in double?

This program forks first, and then execlp starts, the calling program goes into two numbers, power and base.

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; } 

Let's say I go to base 3, power 5. This is what I get:

  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 argvs, I get their value (like char *, but dumping fails).

Any ideas why I can't read the values ​​correctly?

+4
source share
2 answers

Or read double:

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

Or scan to integers:

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

A quick code setup should do this:

 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; 

}

  • To convert a char array to a digit you can use atof()
  • Remember to update printf to double %f or they won’t appear right on your output!
0
source

Source: https://habr.com/ru/post/1435094/


All Articles