Langage c comment fonction gets??
Fermé
yoda
-
3 déc. 2004 à 13:48
geotop2013 Messages postés 5 Date d'inscription vendredi 15 mars 2013 Statut Membre Dernière intervention 15 mars 2013 - 15 mars 2013 à 10:50
geotop2013 Messages postés 5 Date d'inscription vendredi 15 mars 2013 Statut Membre Dernière intervention 15 mars 2013 - 15 mars 2013 à 10:50
A voir également:
- Gets langage c
- Langage ascii - Guide
- Langage binaire - Guide
- Pascal langage - Télécharger - Édition & Programmation
- Langage pascal - Télécharger - Édition & Programmation
- Dev-Pascal - Télécharger - Édition & Programmation
11 réponses
Ravachol
Messages postés
566
Date d'inscription
vendredi 5 mars 2004
Statut
Membre
Dernière intervention
30 octobre 2005
120
3 déc. 2004 à 14:33
3 déc. 2004 à 14:33
Salut,
Je ne vois pas la déclaration de n dans le code que tu as posté.
A++
C'est pas parce qu'ils sont nombreux à avoir tort
qu'ils ont raison! (COLUCHE)
Je ne vois pas la déclaration de n dans le code que tu as posté.
A++
C'est pas parce qu'ils sont nombreux à avoir tort
qu'ils ont raison! (COLUCHE)
Ravachol
Messages postés
566
Date d'inscription
vendredi 5 mars 2004
Statut
Membre
Dernière intervention
30 octobre 2005
120
3 déc. 2004 à 16:00
3 déc. 2004 à 16:00
Je viens de copier ton code et chez moi ça passe sans pb après avoir ajouté la déclaration de n.
A++
C'est pas parce qu'ils sont nombreux à avoir tort
qu'ils ont raison! (COLUCHE)
A++
C'est pas parce qu'ils sont nombreux à avoir tort
qu'ils ont raison! (COLUCHE)
"de vider le flux d'entrée stdin si tu appliques une boucle sur gets"
voila qui a l aire interessant mais je comprend pas se que tu a dis, sa veut dire quoi ou du moin comment je fait???
j ai l impression que gets lit ce qui a dans un buffer et que le mien est deja rempli, du coup il gets autre chose!! donc je croi que je doi vider quelque chose mais comment??
(fflush???)
c'est ca que tu a voulu dire non??!!??
voila qui a l aire interessant mais je comprend pas se que tu a dis, sa veut dire quoi ou du moin comment je fait???
j ai l impression que gets lit ce qui a dans un buffer et que le mien est deja rempli, du coup il gets autre chose!! donc je croi que je doi vider quelque chose mais comment??
(fflush???)
c'est ca que tu a voulu dire non??!!??
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
pardon , il y est normalement ds la vraie version, a vrai dire la vraie version est un peu plus complexe mais je suis ur que le probleme vien des ces ligne
Bonjour,
je fai une programmation mai c ne marche po
#include <string.h>
#include <stdio.h>
typedef enum{Printemps,Ete,Automne,Hiver}Saison;
typedef enum{janvier, fevrier, mars, avril, mai, juin, juillet, aout, septembre, octobre, novembre, decembre}Mois;
int main(void){
Saison s;
Mois m;
char moi[10];
printf("Introduire un mois:");
gets(moi);
printf("");
if ( (moi=="janvier")|| (moi=="JANVIER") ) m=janvier;
if ( (moi=="fevrier") ||(moi=="FEVRIER") ) m=fevrier;
if ( (moi=="mars")|| (moi=="MARS") ) m=mars;
if ( (moi=="avril")|| (moi=="AVRIL") ) m=avril;
if ( (moi=="mai")|| (moi=="MAI") ) m=mai;
if ( (moi=="juin") ||(moi=="JUIN") ) m=juin;
if ( (moi=="JUILLET")|| (moi=="juillet") ) m=juillet;
if ( (moi=="aout")||(moi=="AOUT") ) m=aout;
if ( (moi=="SEPTEMBRE")|| (moi=="septembre") )m=septembre;
if ( (moi=="octobre")|| (moi=="OCTOBRE") ) m=octobre;
if ( (moi=="NOVEMBRE")|| (moi=="novembre") ) m=novembre;
if ( (moi=="decembre")|| (moi=="DECEMBRE") ) m=decembre;
else printf("ERREUR");
switch(m){
case janvier :
case fevrier :
case mars : printf("c'est la saison d'hiver");break;
case avril :
case mai :
case juin :printf("c'est la saison du printemps");break;
case juillet:
case aout :
case septembre: printf("c'est la saison d'été");break;
case octobre :
case novembre :
case decembre:printf("c'est la saison d'automne");
}
return ;
}
je fai une programmation mai c ne marche po
#include <string.h>
#include <stdio.h>
typedef enum{Printemps,Ete,Automne,Hiver}Saison;
typedef enum{janvier, fevrier, mars, avril, mai, juin, juillet, aout, septembre, octobre, novembre, decembre}Mois;
int main(void){
Saison s;
Mois m;
char moi[10];
printf("Introduire un mois:");
gets(moi);
printf("");
if ( (moi=="janvier")|| (moi=="JANVIER") ) m=janvier;
if ( (moi=="fevrier") ||(moi=="FEVRIER") ) m=fevrier;
if ( (moi=="mars")|| (moi=="MARS") ) m=mars;
if ( (moi=="avril")|| (moi=="AVRIL") ) m=avril;
if ( (moi=="mai")|| (moi=="MAI") ) m=mai;
if ( (moi=="juin") ||(moi=="JUIN") ) m=juin;
if ( (moi=="JUILLET")|| (moi=="juillet") ) m=juillet;
if ( (moi=="aout")||(moi=="AOUT") ) m=aout;
if ( (moi=="SEPTEMBRE")|| (moi=="septembre") )m=septembre;
if ( (moi=="octobre")|| (moi=="OCTOBRE") ) m=octobre;
if ( (moi=="NOVEMBRE")|| (moi=="novembre") ) m=novembre;
if ( (moi=="decembre")|| (moi=="DECEMBRE") ) m=decembre;
else printf("ERREUR");
switch(m){
case janvier :
case fevrier :
case mars : printf("c'est la saison d'hiver");break;
case avril :
case mai :
case juin :printf("c'est la saison du printemps");break;
case juillet:
case aout :
case septembre: printf("c'est la saison d'été");break;
case octobre :
case novembre :
case decembre:printf("c'est la saison d'automne");
}
return ;
}
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
>
skay
29 avril 2008 à 22:40
29 avril 2008 à 22:40
Salut,
pour l'info
On peut utliser :
- les entiers
- les caractères
- les énumérations
Dans son cas il s'agit d'une énumération
pour l'info
On peut utliser :
- les entiers
- les caractères
- les énumérations
Dans son cas il s'agit d'une énumération
on vous a jamais expliquer qu'ils faut jamais utilisé gets ca provoque des buffer overflow !!!
essayer de mettre une chaine de caractère plus longue que l'espace alouer, il va pas aimer du tout ca votre programme (en plus l'espace alouer n'est pas forcement vide car tu utilise malloc du coup du peut avoir des caracère bizzard dans ton chaine entrée)
essayer de mettre une chaine de caractère plus longue que l'espace alouer, il va pas aimer du tout ca votre programme (en plus l'espace alouer n'est pas forcement vide car tu utilise malloc du coup du peut avoir des caracère bizzard dans ton chaine entrée)
geotop2013
Messages postés
5
Date d'inscription
vendredi 15 mars 2013
Statut
Membre
Dernière intervention
15 mars 2013
15 mars 2013 à 10:50
15 mars 2013 à 10:50
La comparaison entre les chaines pour le mois est fausse.
Voici le code corrigé:
if (( strcmp(moi,"janvier") == 0) || (strcmp(moi,"JANVIER")==0) ) m=janvier;
else if ( (strcmp(moi,"fevrier")==0) || (strcmp(moi,"FEVRIER")==0) ) m=fevrier;
else if ( (strcmp(moi,"mars")==0)|| (strcmp(moi,"MARS")==0) ) m=mars;
else if ( (strcmp(moi,"avril")==0)|| (strcmp(moi,"AVRIL")==0) ) m=avril;
else if ( (strcmp(moi,"mai")==0) || (strcmp(moi,"MAI")==0 )) m=mai;
else if ( (strcmp(moi,"juin")==0) || (strcmp(moi,"JUIN")==0) ) m=juin;
else if ( (strcmp(moi,"JUILLET")==0) || (strcmp(moi,"juillet")==0) ) m=juillet;
else if ( (strcmp(moi,"aout")==0) || (strcmp(moi,"AOUT")==0) ) m=aout;
else if ( (strcmp(moi,"SEPTEMBRE")==0)|| (strcmp(moi,"septembre")==0) ) m=septembre;
else if ( (strcmp(moi,"octobre")==0) || (strcmp(moi,"OCTOBRE")==0) ) m=octobre;
else if ( (strcmp(moi,"NOVEMBRE")==0) || (strcmp(moi,"novembre")==0) ) m=novembre;
else if ( (strcmp(moi,"decembre")==0) || (strcmp(moi,"DECEMBRE")==0) ) m=decembre;
else printf("ERREUR");
Voici le code corrigé:
if (( strcmp(moi,"janvier") == 0) || (strcmp(moi,"JANVIER")==0) ) m=janvier;
else if ( (strcmp(moi,"fevrier")==0) || (strcmp(moi,"FEVRIER")==0) ) m=fevrier;
else if ( (strcmp(moi,"mars")==0)|| (strcmp(moi,"MARS")==0) ) m=mars;
else if ( (strcmp(moi,"avril")==0)|| (strcmp(moi,"AVRIL")==0) ) m=avril;
else if ( (strcmp(moi,"mai")==0) || (strcmp(moi,"MAI")==0 )) m=mai;
else if ( (strcmp(moi,"juin")==0) || (strcmp(moi,"JUIN")==0) ) m=juin;
else if ( (strcmp(moi,"JUILLET")==0) || (strcmp(moi,"juillet")==0) ) m=juillet;
else if ( (strcmp(moi,"aout")==0) || (strcmp(moi,"AOUT")==0) ) m=aout;
else if ( (strcmp(moi,"SEPTEMBRE")==0)|| (strcmp(moi,"septembre")==0) ) m=septembre;
else if ( (strcmp(moi,"octobre")==0) || (strcmp(moi,"OCTOBRE")==0) ) m=octobre;
else if ( (strcmp(moi,"NOVEMBRE")==0) || (strcmp(moi,"novembre")==0) ) m=novembre;
else if ( (strcmp(moi,"decembre")==0) || (strcmp(moi,"DECEMBRE")==0) ) m=decembre;
else printf("ERREUR");