(c), probleme condition

Résolu/Fermé
ugo - 15 nov. 2008 à 22:13
pyschopathe Messages postés 1973 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 - 15 nov. 2008 à 22:47
Bonjour,
j'aimerais crée une condition qui verifie une chaîne de caractère du style :

char nom[100];

scanf("%s",nom);

printf("%s\n",nom);

if (nom == mon_nom)
{
printf("ça marche");
}

Mais le problème c'est que la condition ne marche que avec les nombres =/ je sais que c'est possible ce que je demande mais je ne sais pas comment , merci de vos réponses en avance.

4 réponses

pyschopathe Messages postés 1973 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135
15 nov. 2008 à 22:22
strcmp est la fonction qu'il te faut pour comparer deux chaines de caractères. Elle renvoie 0 si les deux chaines sont identiques. man strcmp pour plus d'infos.
0
merci , je vais voir ça :D
@+
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 836
15 nov. 2008 à 22:24
Salut
En C, pour comparer deux chaînes, on utilise strcmp ou mieux encore strncmp de string.h. Si tu utilises l'opérateur ==, tu compares les adresses, qui sont bien évidemment différentes, à moins d'utiliser un pointeur pointant sur nom (mais bon ^^).
A la place de :
if (nom == mon_nom) 

teste :
if (strncmp(nom,mon_nom,sizeof nom)==0) 

N'oublie pas qu'il y aura le '\n' de stocker dans ta chaîne si il y a la place. Donc, stocke-le aussi dans mon_nom.
Et, je te conseille plutôt d'utiliser fgets que scanf("%s",nom); pour des raisons de sécurités.
Cdlt
0
pyschopathe Messages postés 1973 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135
15 nov. 2008 à 22:29
Salut fiddy, pourrais-tu m'expliquer pourquoi fgets est plus sécurisé que scanf stp ? Mon C est un peu rouillé ^^.

edit : En fait, je viens de me souvenir que fgets utilisait un tampon pour stocker la chaîne et qu'on pouvait spécifier le nombre de caractères à lire... Ceci expliquant celà, inutile de te fatiguer à moins que tu aies des précisions ou corrections à apporter...
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 836 > pyschopathe Messages postés 1973 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010
15 nov. 2008 à 22:35
Ca tombe bien, je viens juste d'écrire un article il y a pas longtemps ^^.
http://fiddy60.club.fr/C.html
Cdlt
0
pyschopathe Messages postés 1973 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135 > fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022
15 nov. 2008 à 22:47
Merci fiddy, pas mal cet article et je jetterai un coup d'oeil au reste du site quand j'aurai 5 minutes, il m'a l'air d'y avoir deux-trois trucs intéressants ^^.
0
Ben merci beaucoup en tout cas ça a reglé mes problemes :DD
au revoir
0