Ajouter un enregistrement a un fichier

Fermé
kalafaz Messages postés 6 Date d'inscription vendredi 20 novembre 2015 Statut Membre Dernière intervention 16 avril 2016 - Modifié par kalafaz le 16/04/2016 à 15:55
kalafaz Messages postés 6 Date d'inscription vendredi 20 novembre 2015 Statut Membre Dernière intervention 16 avril 2016 - 16 avril 2016 à 17:33
Bonjour,
lors de l'exécution de mon code j'ai ne peut pas ajouter un nouveau patient ! elle reste toujours dans la patient n 1
voila mon code et merci de me conseillé q'est ce que je peut faire dans ce cas
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int main()
{

{
                      //menu 
  printf("\n+-------------------------------------------+\n");
  printf("|      Gestion d'un cabinet medical         |\n");
  printf("+-------------------------------------------+\n");
  printf("|                                           |\n");
  printf("+----*****----------MENU-------*****--------+\n");

  printf("|  0    Quitter l'application               |\n");
  printf("|  1    gestion des patients                |\n");
  printf("|  2    gestion des rendez-vous             |\n");
  printf("|  3    gestion des medicament              |\n");
  printf("|+-----------------------------------------+|\n");
} // *** menu de choix *** 
  int choix;
  printf ("taper le numero de choix");
  scanf("%d",&choix);
  switch(choix)
  {
   case 0:
    // *** quitter le programme ***
    return 0;
   case 1:
    // *** gestion des patients *** 
  printf("\n+-------------------------------------------+\n");
  printf("|  1       gestion des patients                |\n");
  printf("\n+-------------------------------------------+\n");
    }
FILE *cabinet; /* pointeur sur FILE */
  char NOM_FICHIER[30]; 
  int  C ;
  int nb_patient;
  int nbb_patient;
  int CC ;
  int choixx ;
  struct patientt {
  char  nom[30];
  char prenom [30];
  char  adresse [30];
  char lieu_naissance [30];
  char etat_civil [30];
  int numero ;
};
 struct patienttt {
  char  nom[30];
  char prenom [30];
  char  adresse [30];
  char lieu_naissance [30];
  char etat_civil [30];
  int numero ;
};
struct date_naissancee {
 int jour ;
 int mois ;
 int annee ;
};
struct date_naissanceee {
 int jour ;
 int mois ;
 int annee ;
};
struct date_naissancee date_naissancee ;
struct date_naissancee date_naissance ;
struct patientt patient ;
struct patienttt patientt ;
  printf("\n+-------------------------------------------+\n");
  printf("|        Creer et remplir le fichier          |\n");
  printf("\n+-------------------------------------------+\n");
    /* Créer et remplir le fichier */
  printf("Entrez le nom du fichier a creer : ");
  scanf("%s", NOM_FICHIER);
  cabinet = fopen(NOM_FICHIER, "w");  /* write */
  printf("ajouter le nombre de patients : ");
  scanf("%d", &nb_patient);
  C = 0;
  while (C<nb_patient)
   { 
      printf ("-----patient %d-----",C+1);
      printf ("\n");
      printf(" nom : ");
      scanf("%s",&patient.nom);
      fprintf(cabinet, "%s\t", patient.nom);
      printf(" prenom : ");
      scanf("%s",&patient.prenom);
      fprintf(cabinet, "%s\t", patient.prenom);
      printf(" adresse : ");
      scanf("%s",&patient.adresse);
      fprintf(cabinet, "%s\t", patient.adresse);
      printf("----- date et lieu naissance : ----- ");
      printf ("\n");
      printf (" jour:");
      scanf ("%d",&date_naissance.jour);
      fprintf(cabinet, "%d\t",date_naissance.jour);
      printf (" mois:");
      scanf ("%d",&date_naissance.mois);
      fprintf(cabinet, "%d\t",date_naissance.mois);
      printf (" annee:");
      scanf ("%d",&date_naissance.annee);
      fprintf(cabinet, "%d\t",date_naissance.annee);
      printf(" lieu_naissance : ");
      scanf("%s",&patient.lieu_naissance);
      fprintf(cabinet, "%s\t",patient.lieu_naissance);
      printf("\n+--------------------------------+\n ");
      printf(" etat_civil : ");
      scanf("%s",&patient.etat_civil);
      fprintf(cabinet, "%s\t",patient.etat_civil);
      printf(" numero : ");
      scanf("%d",&patient.numero);
      fprintf(cabinet, "%d\t",patient.numero);
      C++;
     }
  printf("+---*****---Gestion des patients---*****----+\n");
  printf("|  0    Quitter l'application               |\n");
  printf("|  1    ajouter un nouveau patient          |\n");
  printf("|  2    suprimer un patient existant        |\n");
  printf("|  3    chercher un patient                 |\n");
  printf("|  4    modifier un patient                 |\n");
  printf("|+-----------------------------------------+|\n");
  printf ("taper le numero de choix");
  scanf("%d",&choixx);
  switch(choixx)
  {
   case 0: 
   return 0 ;
   case 1: 
   /* Réouverture du fichier */
 cabinet = fopen(NOM_FICHIER, "a+");
   if (! cabinet)
     {  
      printf("\aERREUR: Impossible d'ouvrir "
             "le fichier: %s.\n", NOM_FICHIER);
      exit(-1);
     }// *** ajouter un nouveau patient ***
     printf("|  1    ajouter un nouveau patient          |\n");
     printf("    nombre de patients a ajouter :            " );
  scanf("%d", &nbb_patient);
  CC = 0;
  while (CC<nbb_patient)
     { 
     printf ("-----patient %d-----",CC+1);
     printf ("\n");
     printf(" nom : ");
     scanf("%s",&patient.nom);
     fprintf(cabinet, "%s\t", patientt.nom);
     printf(" prenom : ");
     scanf("%s",&patient.prenom);
     fprintf(cabinet, "%s\t", patientt.prenom);
     printf(" adresse : ");
     scanf("%s",&patient.adresse);
     fprintf(cabinet, "%s\t", patientt.adresse);
     printf("----- date_naissance : ----- ");
     printf ("\n");
     printf (" jour:");
     scanf ("%d",&date_naissance.jour);
     fprintf(cabinet, "%d\t",date_naissancee.jour);
     printf (" mois:");
     scanf ("%d",&date_naissance.mois);
     fprintf(cabinet, "%d\t",date_naissancee.mois);
     printf (" annee:");
     scanf ("%d",&date_naissance.annee);
     fprintf(cabinet, "%d\t",date_naissancee.annee);
     printf(" lieu_naissance : ");
     scanf("%s",&patient.lieu_naissance);
     fprintf(cabinet, "%s\t",patientt.lieu_naissance);
     printf(" etat_civil : ");
     scanf("%s",&patient.etat_civil);
     fprintf(cabinet, "%s\t",patientt.etat_civil);
     printf(" numero : ");
     scanf("%d",&patient.numero);
     fprintf(cabinet, "%d\t",patientt.numero);
      C++;
     } 
   case 2: // ***    suprimer un patient existant ***
   return 0;
  }
  fclose(cabinet);
  
   getch();  
   return 0; 
}


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.
A voir également:

2 réponses

Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
16 avril 2016 à 16:24
Bonjour,

si on ouvre un fichier en mode write (par fopen(NOM_FICHIER, "w")), on crée le fichier qui part de 0.
Pour ajouter dans un fichier, il faut l'ouvrir en mode append par fopen(NOM_FICHIER, "a")
0
kalafaz Messages postés 6 Date d'inscription vendredi 20 novembre 2015 Statut Membre Dernière intervention 16 avril 2016
16 avril 2016 à 16:31
je corrige alors comme ca ?
cabinet = fopen(NOM_FICHIER, "a"); /* write */
0
kalafaz Messages postés 6 Date d'inscription vendredi 20 novembre 2015 Statut Membre Dernière intervention 16 avril 2016
16 avril 2016 à 16:40
ca marche pas le méme probléme !
0
jisisv Messages postés 3645 Date d'inscription dimanche 18 mars 2001 Statut Modérateur Dernière intervention 15 janvier 2017 934
Modifié par jisisv le 16/04/2016 à 17:32
Utilise le mode "a+":
#include <stdlib.h>
#include <stdio.h>

#define BUFFERSIZE 128
#define FILDEST "data.txt"
int main(int argc, char *argv[])
{
  FILE *fild;
  char buffer[BUFFERSIZE];

  if ( fild = fopen(FILDEST, "a+") )
    {
      if( fgets( buffer, BUFFERSIZE, fild) )
      {
         puts(buffer);
      }

      fprintf(fild , "%s\n", "New data");
      fclose(fild);
    }
  return EXIT_SUCCESS;
}


Compilation/test:
johand@bata:~/src/CCM/C$ touch read_append.c; make read_append ; rm data.txt 
cc read_append.c -o read_append
rm: impossible de supprimer 'data.txt': Aucun fichier ou dossier de ce type
johand@bata:~/src/CCM/C$ ./read_append ; cat data.txt
New data
johand@bata:~/src/CCM/C$ ./read_append ; cat data.txt
New data

New data
New data



Gates gave ^W  sold  you the windows.
GNU gave us the whole house.(Alexandrin)
0
kalafaz Messages postés 6 Date d'inscription vendredi 20 novembre 2015 Statut Membre Dernière intervention 16 avril 2016
Modifié par kalafaz le 16/04/2016 à 17:33
ok j'ai une autre question svp
comment peut-on faire supprimer un enregistrement dans un fichier ? !
mercii beaucoup de m'aider
mercii infiniment
0