Manipuler proprement les chaines en c
florent
-
marvinrouge -
marvinrouge -
j'ai un probleme pour la manipulation des chaines de caracteres en c
voila mon pobleme:
j'ai declare un type personne :
#define LGMAXNOM 15
#define LGMAXADD 80
typedef struct
{
int num_ref ;
char nom [LGMAXNOM+1];
char prenom [LGMAXNOM+1];
char adresse [LGMAXADD+1];
int num_tel ;
int num_port;
char email [LGMAXADD+1];
//on creera un type specifique au date de naissance plus tard
int date_naissance;
} personne;
Enstuire pour enregistrer un element j'utilise :
personne saisir_fiche()
{
//saisie d'une fiche
personne fiche;
printf("entrez num ref \n");
scanf("%d",&fiche.num_ref);
printf("entrez nom \n");
scanf("%s",&fiche.nom);
printf("entrez prenom \n");
scanf("%s",&fiche.prenom);
printf("entrez adresse \n");
scanf("%s",&fiche.adresse);
printf("entrez num tel \n");
scanf("%d",&fiche.num_tel);
printf("entrez num prot \n");
scanf("%d",&fiche.num_port);
printf("entrez naissance \n");
scanf("%d",&fiche.date_naissance);
printf("entrez mail \n");
scanf("%s",&fiche.email);
return fiche;
}
mais voila des que je fait un scanf apres cette procedure, sa plante.
De plus j'ai des resultats aleatoires si par exemple dans le champ adresse je met un espace ex " 30 rue du chateau "
Si vous avez un autre moyen de saisir des chaines de caracteres proprement ca m'aiderait bien
Merci d'avance :-)
voila mon pobleme:
j'ai declare un type personne :
#define LGMAXNOM 15
#define LGMAXADD 80
typedef struct
{
int num_ref ;
char nom [LGMAXNOM+1];
char prenom [LGMAXNOM+1];
char adresse [LGMAXADD+1];
int num_tel ;
int num_port;
char email [LGMAXADD+1];
//on creera un type specifique au date de naissance plus tard
int date_naissance;
} personne;
Enstuire pour enregistrer un element j'utilise :
personne saisir_fiche()
{
//saisie d'une fiche
personne fiche;
printf("entrez num ref \n");
scanf("%d",&fiche.num_ref);
printf("entrez nom \n");
scanf("%s",&fiche.nom);
printf("entrez prenom \n");
scanf("%s",&fiche.prenom);
printf("entrez adresse \n");
scanf("%s",&fiche.adresse);
printf("entrez num tel \n");
scanf("%d",&fiche.num_tel);
printf("entrez num prot \n");
scanf("%d",&fiche.num_port);
printf("entrez naissance \n");
scanf("%d",&fiche.date_naissance);
printf("entrez mail \n");
scanf("%s",&fiche.email);
return fiche;
}
mais voila des que je fait un scanf apres cette procedure, sa plante.
De plus j'ai des resultats aleatoires si par exemple dans le champ adresse je met un espace ex " 30 rue du chateau "
Si vous avez un autre moyen de saisir des chaines de caracteres proprement ca m'aiderait bien
Merci d'avance :-)
A voir également:
- Manipuler proprement les chaines en c
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Impossible d'installer les chaînes tv tcl - Forum TV & Vidéo
- Comment installer les chaînes sur tv tcl en wifi - Forum TV & Vidéo
- Je ne reçois plus les chaines 8 15 16 17 18 - Forum TNT / Satellite / Réception
- Manque les chaines 8-15-16-17-18 ✓ - Forum TNT / Satellite / Réception
5 réponses
pour eviter le fflush qui ne marche pas sous tous les os (ex VMS)
moi je prefere les fonction gets et getc qui sont tout de meme beaucoup plus propres...(enfin c'est avis perso)
moi je prefere les fonction gets et getc qui sont tout de meme beaucoup plus propres...(enfin c'est avis perso)
je croit que je vai aussi abandonner le scanf ("%s") parce uqe le flush resout pas tout, en effet des que le scanf rencontre un separateur ( comme l'espace ) benh il va pas plus loin, autrement dit si je tape l'adresse :30 rue lalala , benh il memorise que le 30...
je veut me renseigner sur gets pour essayer
merci de ton aide :-)
je veut me renseigner sur gets pour essayer
merci de ton aide :-)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question