lonsomehell

TP fichier

Apr 10th, 2013
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.92 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct personne personne;
  5. struct personne
  6. {
  7.     char nom[10];
  8.     char prenom[10];
  9.     int tel;
  10. };
  11. /*void ajout_personne(FILE *rep)
  12. {
  13.     personne p;
  14.     printf("Donner le nom de la personne\n");
  15.     scanf("%s",p.nom);
  16.     printf("Donner le prenom de la personne\n");
  17.     scanf("%s",p.prenom);
  18.     printf("Donner le  numero de telephone de la personne\n");
  19.     scanf("%d",&p.tel);
  20.     fprintf(rep, "Le nom est :%s \nLe prenom est :%s \nTelephone est :%d\n",p.nom,p.prenom,p.tel);
  21. }*/
  22. void ajout_bin(FILE *rep)
  23. {
  24.     fseek(rep,0,SEEK_END);
  25.     personne p;
  26.     printf("Donner le nom de la personne\n");
  27.     scanf("%s",p.nom);
  28.     printf("Donner le prenom de la personne\n");
  29.     scanf("%s",p.prenom);
  30.     printf("Donner le  numero de telephone de la personne\n");
  31.     scanf("%d",&p.tel);
  32.     fwrite(&p,sizeof(personne),1,rep);
  33. }
  34. void affiche(FILE *rep)
  35. {
  36.     fseek(rep,0,SEEK_END);
  37.     float x;
  38.     x=ftell(rep);
  39.     int i,j;
  40.     i=(int)x/sizeof(personne);//To get the nbre of memory blocks to allocate.
  41.     personne *p;
  42.     p=malloc(i*sizeof(personne));
  43.     rewind(rep);
  44.     fread(p,sizeof(personne),i,rep);
  45.     for(j=0;j<i;j++)
  46.         printf("Nom : %s\nPrenom : %s \nTel %d \n",p[j].nom,p[j].prenom,p[j].tel);
  47.     free(p);
  48. }
  49. void changer_numero(FILE **rep,char *Nom)
  50. {
  51.     fseek(*rep,0,SEEK_END);
  52.     float x;
  53.     x=ftell(*rep);
  54.     int i,j;
  55.     i=(int)x/sizeof(personne);
  56.     personne *p;
  57.     p=malloc(i*sizeof(personne));
  58.     rewind(*rep);
  59.     x=fread(p,sizeof(personne),i,*rep);
  60.     for(j=0;j<i;j++){
  61.         if(!strcmp(p[j].nom,Nom)){
  62.             printf("Donner le nouveau numero.\n");
  63.             scanf("%d",&(p+j)->tel);
  64.             break;//premier seulement
  65.         }
  66.     }
  67.     fclose(*rep);
  68.     *rep=fopen("base.dat","wb");
  69.     fwrite(p,sizeof(personne),i,*rep);
  70.     free(p);
  71. }
  72.  
  73. int main()
  74. {
  75.     FILE *b;
  76. /*  b=fopen("base.dat","w");
  77.     fclose(b);*/
  78.     b=fopen("base.dat","ab+");
  79.     ajout_bin(b);
  80.     affiche(b);
  81.     changer_numero(&b,"ilyes");
  82.     fclose(b);
  83.     b=fopen("base.dat","ab+");
  84.     affiche(b);
  85.     fclose(b);
  86.     return 0;
  87. }
Advertisement
Add Comment
Please, Sign In to add comment