Michael Michael - 1 year ago 101
C Question

How can I get argv[] as int?

i have a piece of code like this:

int main (int argc, char *argv[])

and in shell i do this:

./test 7

but the first printf result is not 7, how can I get argv[] as a int? many thanks

Answer Source

argv[1] is a pointer to a string.

You can print it using: printf("%s\n", argv[1]);

To get an integer from a string you have first to convert it. Use strtol to convert a string to an int.

#include <errno.h>   // for errno
#include <limits.h>  // for INT_MAX
#include <stdlib.h>  // for strtol

char *p;
int num;

errno = 0;
long conv = strtol(argv[1], &p, 10);

// Check for errors: e.g., the string does not represent an integer
// or the integer is larger than int
if (errno != 0 || *p != '\0' || conv > INT_MAX) {
    // Put here the handling of the error, like exiting the program with
    // an error message
} else {
    // No error
    num = conv;    
    printf("%d\n", num);