(c), probleme condition

Résolu
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.
Configuration: Windows XP
Safari 525.19

4 réponses

  1. 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.
    1. Contributeur
      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
      1. 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...
      2. Contributeur
        @pyschopatheCa tombe bien, je viens juste d'écrire un article il y a pas longtemps ^^.
        http://fiddy60.club.fr/C.html
        Cdlt
      3. @fiddyMerci 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 ^^.
    2. Ben merci beaucoup en tout cas ça a reglé mes problemes :DD
      au revoir