Pb avec gets()

Signaler
Messages postés
9
Date d'inscription
jeudi 17 avril 2003
Statut
Membre
Dernière intervention
16 juin 2004
-
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
-
J'ai un probleme avec la fonction gets().
Voici mon code:

struct piece temp;
printf("\nReference de la piece : ");
get(temp.ref);
fflush(stdin);
strupr(temp.ref);
printf("\nLibelle : ");
gets(temp.libel);

fflush(stdin);
printf("%s\t%s",temp.ref,temp.libel);
getch();

et ma structure piece:
struct piece
{
char ref[5];
char libel[30];
float pxVente;
int qteStock;
};

Alors le probleme c'est que ma var temp.ref reçoit les 2 gets()
Je sais pas comment faire, alors si quelqu'un pouvait m'aider ce serait vraiment sympa!

Redbob
A voir également:

8 réponses

Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
2
Je ne comprends pas ton pb, ta var recoit les 2 gets ? ca veut dire koi ?

Au fait, le fflush(stdin); , tu le fais une fois en entrant ds ta fonction, ca suffit...

++

Alhexman
Messages postés
9
Date d'inscription
jeudi 17 avril 2003
Statut
Membre
Dernière intervention
16 juin 2004

Merci d'avoir répondu aussi vite.
En fait ce que j'ai voulu dire, c'est que ma variable temp.ref, au lieu de s'arreter a cinq caractères, reçoit en plus le libellé qui est saisi juste après

Redbob
Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
2
gets(temp.ref);
temp.ref[4] = 0;

l'element ref de ta structure, declaré come il l'est, ne permet de stocker ke 4caracteres et le caractere de fin de chaine ('\0' == 0) donc verifie ke tu ne recois pas plus ke 4 caracteres, ds le cas contraire, nésite pas a augmenter la taille de ton tab...mais pense qu'un élément de ton tableau sera tjrs "perdu" du a la presence du caractere de fin de chaine !

Voila ++

Alhexman
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
fflush(stdin); n'a pas de comportement standard, ca marche sur les compilo de ms (il parait) mais qu'elle est l'interet vu que le code n'est plus standard ?
Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
2
fflush(stdin); permet de vider le tampon d'entrée standar donc pkoi pas lutiliser pour etre sur de ne pas recup de la .... ?
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
non, fflush(stdin) ne fait rien, c'est ecris dans le standard ! à si, ca peut meme planter sur certains systemes !

c'est ecris dans le k&r...
Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
2
excuz moi de douter du standard, mais j'ai fait un prog sous TC (donc Borland) et si j'enleve les appels a cette fonction, ben il marche plus, donc au fond, cette fonction agit ...
Et le k&r n'est pas la norme ANSI, c'est mm assez != sur certains points
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
le k&r est la norme ansi, l'edition 89 à été ecrite pour le standard ansi

fflush sur inputstream peut avoir un effet sur certain compilo, c'est tout

apres tu peux tres bien t'en passer, surtout si tu ve etre portable