Se connecter avec
S'enregistrer | Connectez-vous

Chaine de caractère dans une condition [Résolu]

Dernière réponse : dans Programmation

Bonjour à tous !
Je recontre un petit soucis dans l'un de mes programmes en C.
Voici un exemple de ce que je voudrais réaliser :

  1. //prog.h
  2.  
  3. typedef struct
  4. {
  5. char code[5];
  6. }etudiant


  1. //prog.c
  2.  
  3. void prog (void)
  4. {
  5. etudiant e;
  6. if(strcmp(e.code,"oui")==0)
  7. printf("code ok");
  8. else printf ("erreur");
  9. }


C'est vraiment un résumé, la structure possède d'autre variables théoriquement,etc... mais j'ai cibler le principal ici pour vous expliquer où se situe le problème.
Donc sachant que "code" est une chaine de caractères, lorsque cette chaine forme le mot "oui", je voudrais que l'on écrive "code ok". Mais visiblement ça ne fonctionne pas, j'ai un warning dans mon terminal :

  1. prog.c:103: attention : passing argument 1 of ‘strcmp’ makes pointer from integer without a cast


Je peux donc exécuter quand même le programme, mais j'ai une erreur de segmentation au niveau du "if" par la suite.

Quelqu'un aurait-il une idée ?

En vous remerciant ;) 
Lassé par la pub ? Créez un compte

KangOl a dit :
bizarre ca...

compilateur ? plateforme ?
tu as la meme erreur avec le code "allégé" que tu as posté ?

Merci de ton aide pour commencer ;) 

Je tourne sous Linux Sabayon, donc j'utilise le terminal pour compiler (donc avec gcc *.c -o prog).
Alors par contre j'vais rebooté sur Sabayon là parce que j'étais sous Vista et j'rééditerai mon post ensuite.
Mais j'peux déjà te dire que j'ai testé sur un autre Pc (Windows XP) avec "dev c++" le code allégé ci dessus et ça fonctionne sans problème.
En revanche j'pense avoir oublier le #include<stdlib.h> dans mon "vrai" programme...ça pourrait avoir un rapport ? :??:  ... j'vais aller voir ça... :hello: 
J'suis débutant au fait ... ça j'l'avais pas précisé ! :D  :D 

Ok...alors le programme allégé tourne aussi sans problème !
J'vais revoir encore celui d'origine pour essayer de trouver d'ou viens le soucis...

Par contre je sais que si j'veux que ce soit un nombre qui valide l'affichage "code ok", ça marche nikel !

Dans ce genre là quoi :
  1. //prog.h
  2. typedef struct
  3. {
  4. int code;
  5. }etudiant;


  1. //prog.c
  2. void prog (void)
  3. {
  4. etudiant e;
  5. if(e.code==1)
  6. printf("code ok" );
  7. else printf ("erreur" );
  8. }
Expert Programmation

KangOl +1
guillaumech +1 aussi.

les pages man, gcc -Wall et google sont nos meilleurs amis ;) 

jb, force TOUS les warnings et ne sois satisfait de toi que quand il n'en reste aucun. :) 
Lassé par la pub ? Créez un compte