Langage C (saisie de données sur fichier)

doggy59115 Messages postés 2 Date d'inscription samedi 29 janvier 2005 Statut Membre Dernière intervention 2 avril 2005 - 2 avril 2005 à 14:49
cs_Minash Messages postés 1 Date d'inscription samedi 2 avril 2005 Statut Membre Dernière intervention 2 avril 2005 - 2 avril 2005 à 19:16
Bonjour à tous ! Je bloque sur mon programme en langage C. Je suis novice !
Je dois créer un programme où l'on rentre : nom, prénom, ville, adresse, code postal, téléphone et anniversaire. Pour cela j'utilise une structure. Jusqu'à présent tout va bien ! Maintenant je dois contrôler la saisie afin d'éviter que la chaîne de caractère entrée dépasse de mon tableau. Pour cela j'ai utiliser :"scanf ("%4s", var1);
fflush (stdin);" Mais lorsque je depasse tout mes mots se mélange ! De plus en utilisant le scanf je suis bloquer pour rentrer une adresse , car une fois arrivé a l'espacement il fini la saisie :s . Et je dois rentrer tout cela dans un fichier. J'avais penser à la fonction "fgets" mais pas moyen de la comprendre. jai essayé beaucoup de choses comme "getche","gets"... Mais en vain.
Voici mon programme en C :

#include<stdio.h>
#include<stdlib.h>
#include<string.h>



struct personne /* D‚claration de la structure personne */
{
char fnom[20];
char pnom[20];
int phone[10];
char adresse[60];
char ville[15];
int code[5];
int jour[2];
int mois[2];
int annee[4];
};


struct personne list[200]; /* D‚claration du nombre de contact que contiendra le tableau */



main()
{


FILE*saisie;


/*D‚claration des variables*/
char pnom[20],fnom[20],phone[10],adresse[60],ville[15],code[5],jour[2],mois[2],annee[4];


int i,nbre;


clrscr();


saisie=fopen("resultat.dat","wt");


printf("Entrez le nombre de personnes : "); /* Nombre de personnes … ajouter */
scanf("%d",&nbre);
printf("________________________________");
for(i=0;i<nbre;i++)
{
printf(" \n \n \nEntrez le nom : "); /* Saisie des infos concernant la personne */
scanf("%20s",list[i].fnom);
fflush(stdin);
printf("Entrez le pr‚nom : ");
scanf("%20s",list[i].pnom);
fflush(stdin);
printf("Entrez le num‚ro de t‚l‚phone (xxxxxxxx) : ");
scanf("%10s",list[i].phone);
fflush(stdin);
printf("Entrez l'adresse : ");
scanf("%60s",list[i].adresse);
fflush(stdin);
printf("Entrez la ville : ");
scanf("%15s",list[i].ville);
fflush(stdin);
printf("Puis le code postal : ");
scanf("%5s",list[i].code);
fflush(stdin);
printf("Vous allez entrer la date de naissance (xx/xx/xxxx)\n");
printf("Entrez le jour de la date de naissance : ");
scanf("%2s",list[i].jour);
fflush(stdin);
printf("Entrez le mois de la date de naissance : ");
scanf("%2s",list[i].mois);
fflush(stdin);
printf("Entrez l'ann‚e de la date de naissance : ");
scanf("%4s",list[i].annee);
fflush(stdin);
}


/* Affichage des infos concernant la personne */
for(i=0;i<nbre;i++)
{
fprintf(saisie,"\n \nContact : %s %s\n",list[i].pnom,list[i].fnom);
fprintf(saisie,"T‚l‚phone : %s\n",list[i].phone);
fprintf(saisie,"Adresse : %s %s %s\n",list[i].adresse,list[i].ville,list[i].code);
fprintf(saisie,"Date de naissance : %s/%s/%s \n",list[i].jour,list[i].mois,list[i].annee);
}
fclose(saisie);
}

Merci d'avance à tous !

2 réponses

minet03 Messages postés 415 Date d'inscription samedi 4 janvier 2003 Statut Membre Dernière intervention 2 décembre 2005 3
2 avril 2005 à 16:17
Moi aussi j'ai eu des problèmes avec scanf(). Alors j'ai décidé de
faire mes propores fonctions de saisie. Si tu les veux elles sont là :

http://www.cppfrance.com/code.aspx?ID=26131

Le CyberMonde nous offre une meilleur qualité de vie
CyberMan.inc The WebSite
0
cs_Minash Messages postés 1 Date d'inscription samedi 2 avril 2005 Statut Membre Dernière intervention 2 avril 2005
2 avril 2005 à 19:16
Avec fgets:

scanf("%20s",list[i].fnom);

donnerait:

fgets (list[i].nom,20,stdin);



Le premier paramètre
est l'adresse où l'ont va stocker la chaîne, le deuxième paramètre le
nombre de caractères acceptés et le dernier paramètre c'est là où
provient la chaîne (ici le clavier donc stdin).




_________________________________________________________________________

"La programmation est un art"







Minash
0
Rejoignez-nous