Mettre à jour une base de données en C

Fermé
DABO03 Messages postés 9 Date d'inscription lundi 14 janvier 2013 Statut Membre Dernière intervention 23 janvier 2013 - 15 janv. 2013 à 09:21
DABO03 Messages postés 9 Date d'inscription lundi 14 janvier 2013 Statut Membre Dernière intervention 23 janvier 2013 - 15 janv. 2013 à 10:06
Bonjour.
Je dois réaliser un programme en C qui recueille des données saisies par un utilisateur et les enregistre dans un fichier.
Le programme fait aussi un traitement des données et doit par conséquent relire dans le fichier qui sert de base de données.
Merci d'avance pour votre aide.


//Ci-dessous la structure qui comporte l'ensemble des renseignements fournis par un élève.
typedef struct Eleve Eleve;
struct Eleve
{
char nom[30];
char prenom[30];
int age;
int sexe;
/* .........
..... */
};

//Ci-dessous la procédure qui permet de recueillir les informations entrées par l'utilisateur
int input(Eleve *eleve, int i)
{
eleve = malloc(NBELEVES * sizeof(*eleve));
int choice = 0;
do{
if(choice == 2)
break;
system("cls");
printf("ETUDIANT %d\n\n", i+1);

printf(" SECTION A \n");
printf("INFORMATIONS PERSONNELLES\n\n");

printf("Nom\n\n");
fflush(stdin);
fgets(eleve[i].nom, sizeof eleve[i].nom, stdin);
search(eleve[i].nom);

printf("\n\n");

printf("Prenom\n\n");
fflush(stdin);
fgets(eleve[i].prenom, sizeof eleve[i].prenom, stdin);
search(eleve[i].prenom);
printf("\n\n");

do{
printf("Age\n\n");
receive(&eleve[i].age);
printf("\n\n");
}while(eleve[i].age < 10 || eleve[i].age > 80);
/* .....................
.... */

i++;

do{
printf("\n\nCONTINUER LA SAISIE ====> 1\n");
printf("QUITTER LA FENETRE DE SAISIE ====> 2\n\n");
receive(&choice);
}while(choice != 1 && choice != 2);

}while(choice == 1);

FILE *fichier = fopen("base.bin", "ab");//Après enregistrement j'ouvre le fichier pour ajouter les nouvelles données.
if(fichier == NULL)
exit(EXIT_FAILURE);

fwrite(eleve, sizeof(*eleve), i, fichier);
fclose(fichier);

system("cls");

return i;
}

//Ci-dessous la procédure qui permet de recueillir les informations contenues dans le fichier externe
void output(Eleve *eleve, int n)
{
int i = 0;
FILE *fichier = fopen("base.bin", "rb");
if(fichier == NULL) exit(EXIT_FAILURE);

fread(eleve, sizeof(*eleve), n, fichier);
fclose(fichier);
}

//Ci-dessous la procédure qui permet d'afficher le profil d'un étudiant figurant dans la base
void display_profiles(Eleve *eleve, int n)
{
int choix = 0, i;

eleve = malloc(NBELEVES * sizeof(*eleve));
if(eleve == NULL) exit(EXIT_FAILURE);

output(eleve, n);

do{
printf("Veuillez saisir l'indice correspondant pour afficher le profil de l'etudiant de votre choix\n\n");

printf("| PRENOMS | NOMS | INDICES |\n\n");
for(i = 0; i < n; i++)
{
printf("| %8s %6s %2d\n", eleve[i].prenom, eleve[i].nom, i+1);
}
printf("\n\n");
receive(&choix);
}while(choix < 1 && choix > n);
/* .............
.........*/
} C'est à ce niveau que je Remarque que la base n'est pas correctement mise à jour.
A voir également:

1 réponse

DABO03 Messages postés 9 Date d'inscription lundi 14 janvier 2013 Statut Membre Dernière intervention 23 janvier 2013
15 janv. 2013 à 10:06
.....................................................
.....................................................
.....................................................
0
DABO03 Messages postés 9 Date d'inscription lundi 14 janvier 2013 Statut Membre Dernière intervention 23 janvier 2013
15 janv. 2013 à 10:06
..............................
..............................
..............................
0