1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
#include <stdio.h>
#include <stdlib.h>
#define MAXN 10
#define MAXP 10
struct etud_s // la structure d'un étudiant
{
char nom[MAXN];
char prenom[MAXP];
};
struct etud_s tabetud; //la structure qui me servira pour lire et ecrire
void edition ( struct etud_s tab, char filename[] ) // pour écrire dans tabetud
{
FILE *datei;
datei=fopen ( filename,"w" );
printf ( "\ndonner le nom\n" ); // on met tout simplement ce que l'on veut dans tabetud
scanf ( "%s",&tab.nom );
fprintf ( datei,"%s\t",tab.nom );
printf ( "donner le prenom\n" );
scanf ( "%s",&tab.prenom );
fprintf ( datei,"%s",tab.prenom ); // sauvegarde dans un fichier.txt OK
fclose ( datei );
}
void speicher ( char output[],char input[] ) // enregistrement en binaire
{
FILE *foutput;
FILE *finput;
foutput=fopen ( output,"wb" );
finput=fopen ( input,"rb" ); // on prends notre fichier txt
fwrite ( finput, sizeof ( struct etud_s ),1,foutput ); //on crée le binaire avec simplement ma structure
}
void lecture ( char input[], char output[],struct etud_s etud ) // pour lire à partir du binaire.. c'est LA que ça foire
{
FILE *finput;
FILE *foutput;
finput=fopen ( input,"rb" ); // j'ouvre mon binaire et je vais créer un .txt
foutput=fopen ( output,"wb" );
fread ( finput, sizeof ( struct etud_s ),1,foutput ); //je lis donc depuis mon binaire une structure, et je la met dans un .txt
fscanf ( foutput, "%s",&etud.nom ); // pour afficher ensuite le .txt
fscanf ( foutput,"%s",&etud.prenom );
printf ( "\n le nom est : %s",etud.nom );
printf ( "\n leprenom est : %s",etud.prenom );
}
int main()
{
edition ( tabetud,"edition" ); // edition contient bien ce que j'ai mis dans tabetud
speicher ( "speicher","edition" ); //speicher contient "quelque chose" du binaire donc !
lecture ( "speicher","lecture",tabetud ); //lecture ne contient rien.. la lecture ne se fait donc pas bien...
return EXIT_SUCCESS;
} |
Partager