2017-06-25 6 views
0

J'ai ce type de tableau: char ArrayPalavra [100] [200];Problème de comparaison de tableau Char

Et je suis alimentation comme ça:

pchPalavra = strtok(palavras," "); 

while (pchPalavra != NULL) 
{ 
    tamanhoArrayPalavra++; 
    strcpy(ArrayPalavra[i++], pchPalavra); 
    pchPalavra = strtok (NULL, " "); 
} 

Je vous écris ce tableau avec des mots, comme "ce", "est", "a", "test". Le problème est, si je mets ce tableau dans un pour la comparaison avec un mot, cela ne correspond pas. Mais en test, si j'imprime le ArrayPalavra [i], ils viennent avec "ceci". Pourquoi utiliser itération Doenst travail? J'utilise le langage C

+1

Vous ne pouvez pas utiliser le signe égal '' == pour comparer l'utilisation des chaînes [strcmp] (http://en.cppreference.com/w/c/string/octet/strcmp) –

Répondre

1

Utilisez strcmp() pour comparaison de chaînes, comme ceci:

#include <string.h> // include the header that provides the methods for strings 

// 'ArrayPalavra[i]' should be NULL terminated! 
if(strcmp("this", ArrayPalavra[i]) == 0) 
{ 
    printf("Equal\n"); 
} 

Ne pas oublier que les chaînes en C doivent être NULL fin! L'opérateur

-1

== ne fonctionne pas en C pour les chaînes. Il va comparer les adresses mémoire des pointeurs, qui seront toujours fausses. vous devez importer l'en-tête strings.h puis vous

strcmp("this", ArrayPalavra[i]);