Comparaison chaine de caractere
Fermé
lechat
-
8 déc. 2008 à 15:11
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 8 déc. 2008 à 15:58
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 8 déc. 2008 à 15:58
A voir également:
- Comparaison chaine de caractere
- Caractère ascii - Guide
- Caractere speciaux - Guide
- Caractère spéciaux - Guide
- Chaine tnt gratuite sur mobile - Guide
- Plus de chaine tv - Guide
2 réponses
xav3601
Messages postés
3288
Date d'inscription
lundi 10 novembre 2008
Statut
Membre
Dernière intervention
2 mars 2016
311
8 déc. 2008 à 15:18
8 déc. 2008 à 15:18
Bonjour
Il faut mettre des {} pour le for sinon il ne test que la derniere valeur de i...
et il faut faire le return -1 après la boucle for sinon dès le premier test il va sortir de ta fonction à cause du return..
for(i=0;i<27;i++)
{
if (strcmp(chaine1, chaine2[i]) == 0){ return 0;}
}
return -1;
Il faut mettre des {} pour le for sinon il ne test que la derniere valeur de i...
et il faut faire le return -1 après la boucle for sinon dès le premier test il va sortir de ta fonction à cause du return..
for(i=0;i<27;i++)
{
if (strcmp(chaine1, chaine2[i]) == 0){ return 0;}
}
return -1;
cchristian
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
131
8 déc. 2008 à 15:35
8 déc. 2008 à 15:35
Bonjour,
Je verrais un truc comme ça :
Je verrais un truc comme ça :
int RC-return = 0; int indic_ok1 = 0; ................... ................... RC-return = 0; indic_ok1 = 0; for (i=0; i<27; i++) { if ( strcmp(chaine1, chaine2[i]) == 0) { indic_ok1 = 1; break; } } if ( indic_ok1 = 0) { RC_return = -1;} return (RC_return);
xav3601
Messages postés
3288
Date d'inscription
lundi 10 novembre 2008
Statut
Membre
Dernière intervention
2 mars 2016
311
8 déc. 2008 à 15:37
8 déc. 2008 à 15:37
J'ai l'impression que nos deux propositions font exactement la même chose non?
cchristian
Messages postés
921
Date d'inscription
lundi 21 janvier 2008
Statut
Membre
Dernière intervention
6 mars 2012
131
>
xav3601
Messages postés
3288
Date d'inscription
lundi 10 novembre 2008
Statut
Membre
Dernière intervention
2 mars 2016
8 déc. 2008 à 15:48
8 déc. 2008 à 15:48
En effet, et la tienne est bien meilleure, je n'ai pas regardé (ou mal regardé) les réponses avant de poster, désolé.
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 843
8 déc. 2008 à 15:48
8 déc. 2008 à 15:48
Bizarre d'utiliser autant de variables pour juste faire ça.
En plus il y a une petite erreur :
indic_ok1=0, renverra 0, donc ça sera toujours faux. Pour comparer, c'est le double égal.
Pourquoi ne pas initialiser indic_ok1 à -1 et de retourner indic_ok1 tout à la fin ? T'économises déjà une variable.
Ou alors tu fais directement des return dans le if du for et à la fin. Ce qui économise deux variables, un if et un break.
Cdlt
En plus il y a une petite erreur :
if ( indic_ok1 = 0)
indic_ok1=0, renverra 0, donc ça sera toujours faux. Pour comparer, c'est le double égal.
Pourquoi ne pas initialiser indic_ok1 à -1 et de retourner indic_ok1 tout à la fin ? T'économises déjà une variable.
Ou alors tu fais directement des return dans le if du for et à la fin. Ce qui économise deux variables, un if et un break.
Cdlt
8 déc. 2008 à 15:37
D'accord avec toi pour ne pas mettre le return-1; dans le else. Mais, les accolades dans le for ne sont pas obligés vu qu'il n'y a qu'une instruction. D'ailleurs dans le if non plus elles ne sont pas obligatoires.
Cdlt
8 déc. 2008 à 15:39
8 déc. 2008 à 15:42
Non. En fait si tu ne mets pas les accolades, tu peux juste mettre une instruction, qu'elle soit à la ligne ou pas.
D'ailleurs le C ne fait pas la différence si c'est sur la même ligne ou pas, il se base sur le point virgule.
Cdlt
8 déc. 2008 à 15:46
ca fais longtemps que j'ai pas fais de C!
et je pensais que ca fonctionnais comme avec les if en Vb...
Merci pour cette info :)
8 déc. 2008 à 15:54
for(i=0;i<27;i++)
{
if (strcmp(chaine1, chaine2[i]) == 0){ a=0,}}
return a;
pour moi , lorsque que la chaine 1 est reconnue dans le tableau de chaine l'entier a vaut 0, autrement il vaut toujours la valeur attribuée au départ. Pourtant lorsque j'execute il vaut toujours 0. je suis sure que c'est un minuscule probleme mais je n'arrive pas à le résoudre...