doggy59115
Messages postés2Date d'inscriptionsamedi 29 janvier 2005StatutMembreDernière intervention 2 avril 2005
-
2 avril 2005 à 14:49
cs_Minash
Messages postés1Date d'inscriptionsamedi 2 avril 2005StatutMembreDerniè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 :
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);
}
cs_Minash
Messages postés1Date d'inscriptionsamedi 2 avril 2005StatutMembreDerniè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).