2012-02-08 12 views
1

J'essaie de comparer une chaîne de caractères avec l'argument argv.Comment comparer une chaîne de caractères avec argv en C?

J'ai dans ma principale:

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

Maintenant, si j'écris

if (argv[2] == 'squared') 

l'IDE me dit que j'ai une constante caractère multiple ou que le char * est trop long pour sa tapez ou quelque chose de similaire.

Existe-t-il un moyen de comparer argv à une chaîne de caractères? J'ai même utilisé strcmp mais cela me donne une erreur de segmentation quand le programme s'exécute.

J'ai aussi essayé une boucle for et argv [i] incrémentée mais cela m'a aussi donné une erreur.

Peut-être qu'il me manque quelque chose?

+0

'strcmp' est la façon de le faire, ne sais pas pourquoi cela n'a pas fonctionné pour vous. – Pubby

+0

duplication possible de [Aide comparant une chaîne argv] (http://stackoverflow.com/questions/803776/help-comparing-an-argv-string) –

Répondre

6

Utilisez strcmp et une chaîne réelle, pas une constante multi-caractères.

strcmp(argv[2], "squared") == 0 
+3

ou 'strncmp (3)' :) –

+1

Il n'y a aucune raison de utilisez 'strncmp'. La norme spécifie que '' squared ''et' argv [2] 'sont des chaînes terminées par zéro (en supposant que' argc' est au moins 3). –

+1

Si vous voulez faire correspondre la chaîne entière, 'strncmp' n'est pas utiliser quand l'une des chaînes est une chaîne littérale :) – pmg

2

Vous pouvez utiliser strcmp pour que:

if(strcmp(argv[2], "squared") == 0) /* returns true if argv[2] is "squared" */ 
3

Essayez strcmp (3). Dans votre cas, vous devez utiliser strcmp(argv[2], "squared"); Consultez la page de manuel this pour plus d'informations.

1

strcmp()/* strncmp() * est le chemin à parcourir. Et assurez-vous que vos chaînes sont terminées par un caractère nul;)

1

Les guillemets simples dans C sont uniquement utilisés pour les caractères uniques, pas pour les chaînes. Donc vous écririez 'a' pour le caractère, mais "bonjour monde" pour une chaîne.

Il y a une différence entre 'a' et 'a' incidemment - "a" a une terminaison nulle à la fin, donc c'est en fait une chaîne de deux caractères. C'est important parce que vous devez vous rappeler que les tableaux char doivent avoir un caractère de plus que la chaîne que vous stockez dans les tableaux.

Pour comparer des chaînes, utilisez strcmp, comme ceci:

if (strcmp(argv[2], "squared") == 0) 
{ 
    //they are equal 
} 
Questions connexes