Problème avec un IF/ELSE - C - Programmation
Marsh Posté le 02-11-2007 à 22:22:58
On ne peut pas comparer des chaines comme ca, tu dois utiliser les fonctions spécifiques aux traitements de chaines, regarde du côté de strcmp.
Marsh Posté le 02-11-2007 à 22:24:45
Excuse moi mais je suis un peu beaucoup nulle en C
Donc pourrais tu etre plus explicite s'il te plait ! merciiii en tout cas
Marsh Posté le 02-11-2007 à 22:43:41
Pour manipuler des chaines de caractères (comparer,avoir la taille,copier,...) utilise la fonction strxxx (strcmp pour la comparaison) et n'oublie pas d'inclure string.h.
Ensuite il ne te demande pas d'entrer le prénom parce que tu récupère le sexe dans un caractère, mais il reste le \n du enter dans le buffer du scanf et donc il va le prendre directement plutot que de te demander de taper quelque chose.
J'espère pas avoir dit trop de connerie le C est un peu loin pour moi.
Marsh Posté le 03-11-2007 à 00:21:30
Pour les comparaisons, tel que le programme est écrit, celà fonctionne puisque le sexe est codé sur un caractère.
Maintenant, les problèmes viennent que tu utilises scanf qui est une fonction TRESSSSSSSSSSSSSSSS difficile à utiliser.
Il FAUT utiliser fgets qui est LA fonction de saisie utilisateur de données, (éventuellement couplées avec les fonctions adéquates strtol, strtod pour les conversons numériques).
Tu peux aller voir là ;
http://www.linux-kheops.com/doc/ma [...] 3.txt.html
Il faudra d'autre part, faire du sexe une chaîne de caractères et comparer sexe[0] avec 'g' ou 'G'.
Marsh Posté le 03-11-2007 à 02:50:56
ReplyMarsh Posté le 03-11-2007 à 14:32:50
magg0t a écrit : voila ce que j'ai fait : |
C'est toujours mieux de poster du code complet, qui compile (sauf question sur erreur de compilation) et qui soit correctement présenté...
Code :
|
Marsh Posté le 03-11-2007 à 14:34:46
LePhasme a écrit : On ne peut pas comparer des chaines comme ca, tu dois utiliser les fonctions spécifiques aux traitements de chaines, regarde du côté de strcmp. |
Quel rapport ? Il s'agit ici de comparer des caractères. Le code est correct.
Marsh Posté le 03-11-2007 à 17:46:18
Emmanuel Delahaye a écrit : |
J'ai eu un gros doute la dessus, et je n'ai pas réussi à trouver une réponse claire :-/
Marsh Posté le 03-11-2007 à 19:28:18
LePhasme a écrit :
|
Il n'y a aucun doute à avoir. Les constantes caractères sont des valeurs de type int. Elles se comparent, grâce à l'opérateur ==, avec des valeurs de caractères de type char qu'on trouve dans les chaines ou des variables de type int contenant la valeur retournée par getchar(), par exemple.
Bref, pour comparer des valeurs numériques, on utilise == . C'est du C basique...
Marsh Posté le 04-11-2007 à 13:56:12
magg0t a écrit : Excuse moi mais je suis un peu beaucoup nulle en C |
Il te faut impérativement prendre un livre (un tuto, un cours) et commencer par le lire. Même si tu retiens pas les 3/4 des trucs, le 1/4 restant est toujours le quart le plus important
Ici les bases du C http://fr.lang.free.fr/cours/Langa [...] e_v2.0.pdf. Un peu ancien mais je l'estime parfait pour un débutant
Ici le C approfondi et hyper pointu http://mapage.noos.fr/emdel
Marsh Posté le 02-11-2007 à 22:11:55
Bonsoir tout le monde !
Voila je m'adresse a votre savoir parce que la je suis a deux doigt de m'arrancher les cheveux ! j'arrive pas a comprendre pourquoi cela ne fonctionne pas !
je précise que je suis ARCHI débutante ! donc si certaines choses vous parraisse grotesque au point de vous arracher les cheveux j'en suis désolé
Voila le problème, j'essaie de créer une fonction qui me permette de faire naitre qq1 (j'ai deja créer deux personnes (Adam & Eve c'est nul ms c mon prof ca ) voila ce que j'ai fait :
void naissance() {
char nom_mere[100];
char nom_pere[100];
char sexe;
char prenom_enfant[100];
printf("Entrer le nom de la mere : " );
scanf("%s",nom_mere);
printf("Entrer le nom du pere : " );
scanf("%s",nom_pere);
printf("Choisir le sexe de l'enfant (G/F) : " );
scanf("%c",&sexe);
if ((sexe=='G') || (sexe=='g'))
{
printf("Entrer un prenom de garcon : " );
scanf("%s",prenom_enfant);
}
else
{
printf("Entrer un prenom de fille : " );
scanf("%s",prenom_enfant);
}
printf("\n**** Felicitation !! %s est ne(e) ****", prenom_enfant);
}
Et donc voila le problème :
juste après avoir choisit le sexe, il me demande un prénom de fille (même si je tappe G ou g) et je peux même pas l'entrer il me met directement la phrase "Félicitation..."
Donc....
SI vous avez une idée pcq la j'en ai marre
Merciii