2013-06-27 2 views
0

J'ai essayé cela pendant environ une heure et j'ai regardé d'autres endroits en ligne mais je n'ai pas encore réussi à accomplir ce que j'essaie de faire. Cela devrait probablement être quelque chose de simple mais je n'ai pas codé en C depuis un moment, donc il me manque peut-être quelque chose. Quoi qu'il en soit, je veux utiliser strcmp pour comparer quelque chose dans une variable appelée char * args et un littéral comme "qw".Utilisation de strcmp pour comparer un pointeur char et un littéral

Je suis en main et passe une fonction cette variable args et quand je la récupèrerai, je veux comparer comme ceci: Peut-être que je fais tout simplement complètement de manière stupide.

char *args; 
char **svdArray; 

int keepTrack = 0; 
int beforeTrack = 0; 

svdArray = malloc(5*sizeof(char*)); 
while (1) 
{   

if(!(strcmp(args[0], "r")) && (!strcmp(args[0], "rr"))) 
    { 

    svdArray[keepTrack] = args[0]; 


    keepTrack++; 
    } 

Tout ce que je veux arriver est si I args [0] a quelque chose en plus ou rr r Je veux exécuter le code dans l'instruction if. Cependant, à partir de maintenant, le flux n'entre jamais et je ne sais pas pourquoi.

Toute aide serait grandement appréciée !!!

+0

Votre programme exemple est même pas syntaxiquement correct - s'il vous plaît montrer votre * code réel *. –

+1

'args []' ne compile pas. –

+1

strcmp renvoie 0 (false) lorsque les chaînes sont égales, donc la fonction peut être utilisée pour trier des chaînes différentes – hetepeperfan

Répondre

2

strcmp() compare les deux chaînes en tout.

Pour tester uniquement pour les parties utilisent strstr() comme par exemple pour:

if (strstr(args, "r")) || strstr(args, "rr"))) 
{ 
    svdArray[keepTrack] = args; 
    keepTrack++; 
} 
+0

Est-ce que 'args' n'est pas un' char * '? donc 'args [0] serait un' char'? – macduff

+0

k, voulait s'assurer que j'avais encore une idée, merci! – macduff

+0

Oui, merci. J'étais en quelque sorte obsédé par les 'args' passés dans' main() ', qui sont en effet' char ** args'. – alk

0

Vous devez transmettre un char* à strcmp, comme args.

Voici le prototype de strcmp de here:

int strcmp (const char * str1, const char * str2);

Ainsi, depuis args est un char* et "r" vous donnera un char* vous devriez essayer:

/* since you're learning, print out what this thing does */ 
#include <stdio.h> 
printf("Output: %d\n",strcmp(args,"r")); 
Questions connexes