Se connecter avec
S'enregistrer | Connectez-vous
Votre question

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

Tags :
  • C / C++ / Java
  • Programme
  • Programmation
Dernière réponse : dans Programmation
Partagez
25 Novembre 2007 11:24:42

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 ;) 

Autres pages sur : chaine caractere condition resolu

25 Novembre 2007 12:27:46

bizarre ca...

compilateur ? plateforme ?
tu as la meme erreur avec le code "allégé" que tu as posté ?
25 Novembre 2007 13:09:29

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 
Contenus similaires
25 Novembre 2007 13:19:50

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. }
25 Novembre 2007 13:31:06

Bon bah ça y'est je crois avoir trouvé mon erreur...
J'ai oublié de définir un nombre de caractères pour la variable "code" dans ma structure :ange: 

Désolé pour le temps perdu, mais merci de ton aide ;)  :hello: 
25 Novembre 2007 13:47:33

et ca compilait ?
25 Novembre 2007 14:39:59

KangOl a dit :
et ca compilait ?

Oui ça a toujours compilé, j'avais juste le warning ... donc ça n'empêchait pas le lancement du programme ensuite, j'obtenais juste une erreur de segmentation.
a b L Programmation
25 Novembre 2007 15:26:08

:)  Ca marche, j'en suis content.

gcc -Wall est ton meilleur ami. ;) 
25 Novembre 2007 16:35:13

zeb a dit :
:)  Ca marche, j'en suis content.

gcc -Wall est ton meilleur ami. ;) 

Umhumh ... ok moi j'veux bien :D 
Mais ça sert à quoi cette bêbête là ? :) 
25 Novembre 2007 17:10:12

RTFM :o 
a b L Programmation
26 Novembre 2007 15:30:41

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. :) 
27 Novembre 2007 15:35:46

Oki ... merci on va voir tout ça ;) 
... j'risque de revenir ! :D