begin process at 2008 07 06 00:18:43
1 205 401 membres
368 nouveaux aujourd'hui
14 119 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Langage C (saisie de données sur fichier) [ Archives / Au secours ] (doggy59115)

Langage C (saisie de données sur fichier) le 02/04/2005 14:49:13

doggy59115

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 !


Re : Langage C (saisie de données sur fichier) le 02/04/2005 16:17:39

minet03
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

Re : Langage C (saisie de données sur fichier) le 02/04/2005 19:16:01

Minash
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


Classé sous : printf, saisie, scanf, list, fflush

Participer à cet échange

Pub



Appels d'offres

Plugin Dialer outlook
Budget : 2 000€
Travail graphique- ill...
Budget : 1 000€
creation de marque et ...
Budget : 1 000€

Snippets en rapport

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS