Search code examples
cargv

Can't compare argv?


I have this code:

if (argv[i] == "-n") 
{
    wait = atoi(argv[i + 1]);
}
else 
{
    printf("bad argument '%s'\n",argv[i]);
    exit(0);
}

When this code gets executed I get the following error:

bad argument '-n'

I seriously don't know why it does that. Can someone explain?


Solution

  • String comparisons need a function in C - usually strcmp() from <string.h>.

    if (strcmp(argv[i], "-n") == 0) 
    {
        wait = atoi(argv[i + 1]);
    }
    else 
    {
        printf("bad argument '%s'\n",argv[i]);
        exit(0);
    }
    

    The strcmp() function returns a negative value (not necessarily -1) if the first argument sorts before the second; a positive value (not necessarily +1) if the first arguments sorts after the second; and zero if the two values are equal.