2010-02-16 4 views
2

Pourquoi cela ne fonctionne-t-il pas? Lorsque j'essaie d'utiliser -l ou -s comme premier argument, les instructions if ne prennent pas. Ils vont toujours à l'autre déclaration.C Les arguments ne fonctionnent pas?

#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; 
} 
+0

Comment essayez-vous de l'exécuter, et que se passe-t-il? –

+0

Que voulez-vous dire par "ne fonctionne pas"? Quelle est l'entrée? Quelle est la sortie? –

+1

Vous le savez peut-être déjà, mais vous devriez aussi vérifier si 'argc> 1' avant d'essayer' argv [1] '. –

Répondre

10

Vous ne pouvez pas comparer les chaînes en utilisant == opérateur - utiliser strcmp() à la place.

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

+0

Merci pour l'aide :) – hahuang65

4

Les chaînes C sont comparées par la fonction strcmp. Au lieu de cela, vous compare simplement les pointeurs. Donc:

if (strcmp(argv[1],"-l") == 0) 
{ 
    printf("Yay!\n"); 
} 
Questions connexes