Question

Pourquoi pas ce travail? Lorsque je tente d'utiliser ou -l -s comme premier argument, l'instruction if ne prennent pas. Ils vont toujours à la déclaration d'autre.

#include <stdio.h>
#include <fcntl.h>
#include <errno.h>
#include <string.h>
#include <stdlib.h>

int main(int argc, char* argv[])
{
    if (argv[1] == "-l")
    {
        printf("Yay!\n");
    }
    else if (argv[1] == "-s")
    {
        printf("Nay!\n");
    }
    else
    {
        printf("%s\n", argv[1]);
    }
        return 0;
}
Était-ce utile?

La solution

Vous ne pouvez pas comparer les chaînes utilisant l'opérateur de == -. strcmp() utilisation à la place

En comparant les chaînes à l'aide == vous comparez les adresses des pointeurs char *, pas de chaîne.

Autres conseils

Dans les chaînes C sont en fonction strcmp compare. Au lieu de cela votre pointeurs compare simplement. Donc:

if (strcmp(argv[1],"-l") == 0)
{
    printf("Yay!\n");
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top