Comparer deux string

Résolu/Fermé
roubalist21 - 16 déc. 2010 à 00:44
 roubalist21 - 16 déc. 2010 à 11:32
Bonjour,


voici le code:
for(i=0;i<maxDF;i++)
	{
		for(j=1;j<(maxS+1);j++)
		{
			if(tabDF[i][j]!=NULL)
			{
				for(k=0;k<=fins;k++)
				{
					if(tabDF[i][j]==tabS[k])
					{			
						y=1;
					}
				}
				if(y==0)
				{
					tabS[fins]=tabDF[i][j];
					fins++;
				}
				y=0;
			}
		}
	}

il y'a des valeurs de tabS qui ressemble exactement à tabDF mais jamais la condition "if" n'est verifié, j'ai beau essayé la même procédure dans un code à part, et ça marche parfaitement.
le tableau tabS c'est un tableau char **tabS une dimension mais de chaine de caractère, le deuxième tabDF c'est un char ***tabDF deux dimensions chaine de caractère .
merci pour toute suggestion.
A voir également:

3 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
16 déc. 2010 à 00:56
Bonjour,

La comparaison entre deux chaînes de caractères ne se fait pas avec le double égal (comparaison des adresses mémoires), mais avec la fonction strcmp.
Par exemple : if(strcmp(tabDF[i][j],tabS[k])==0) { /*alors c'est égal*/}

Cdlt,
0
oui mais ça ne marche pas non plus le strcmp, et pour le double égale je ne suis pas sûr que ça compare les adresses parceque ca a marcher dans code que j'ai testé à part
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
16 déc. 2010 à 08:42
oui mais ça ne marche pas non plus le strcmp
C'est que tu l'utilises mal ou qu'il y a une erreur plus haut dans ton code. Car c'est comme ça qu'on compare en C deux chaînes.
Il faudrait voir ton code en entier. Car s'il y a des caractères genre "\n" de stocker dans tes chaînes, c'est normal que ça foire la comparaison. Poste ton code ici.

et pour le double égale je ne suis pas sûr que ça compare les adresses parceque ca a marcher dans code que j'ai testé à part
Montre le code que tu as testé à part. Il suffit que les deux chaînes pointent sur la même adresse pour qu'on ait l'impression que ça compare les caractères. Mais en tout cas, ça compare les adresses mémoires lorsqu'on compare deux chaînes de caractères.
0
je ne voudrais pas mettre tous mon code parcequ'il n'est pas claire, il contient vers les 200 lignes et en plus c'est du bison et flex, j'ai essayé le strcmp entre deux chaine, et quand il trouve qu'il son égaux il me marque "erreur de segmentation" comme erreur.
0