Vous êtes sur la page 1sur 2

#include<stdio.

h>
#include<string.h>
#define max 100

/* Cr�ation d'un type structur� adapt� aux donn�es : */


typedef struct {
int mois;
int annee;
} edition;

typedef struct {
int code;
char titre[30];
char specialite[30];
char auteur [30];
edition edit;
} livre;

livre B[max];

void afficher(livre A[max], int N){


int i;
for (i=0;i<N;i++)
{

printf("Informations Livre [ %d ]\n",i+1);

printf("\nCode: %d ", A[i].code);


printf("\nTitre: %s ", A[i].titre);
printf("\nSpecialite: %s ", A[i].specialite);
printf("\nAuteur:%s ", A[i].auteur);
printf("\nEdition: %d/%d\n\n", A[i].edit.mois, A[i].edit.annee);
}
}
void main()
{
FILE* fic ;
char ligne[200]; // Taille maximale de la ligne c'est 200 caract�res
int nl=0; //numero nouveau ligne concernat un livre

/* Ouverture du fichier (en lecture texte) : */


fic = fopen("BIBLIO.TXT", "r") ;
if (fic==NULL)
{
puts("Pb d'ouverture du fichier BIBLIO.TXT!");
exit(0);
}
/* Lecture du fichier par fgets+sscanf (la fin de fichier est atteinte quand
fgets renvoie NULL) : */
while ( fgets( ligne, 200, fic) != NULL )
{
if (sscanf(ligne,"%d%s%s%s%d%d",&B[nl].code,&B[nl].titre,&B[nl].specialite,
&B[nl].auteur,&B[nl].edit.mois,&B[nl].edit.annee ) == 6) /* on s'assure
de la validit� des 6 donn�es */
{
printf("\n_________________________\nNouveau ajout
%d\n_________________________\n",nl+1) ;
afficher(B,nl+1); /* dans chaque ligne on trouve un livre et on affiche
tous d�s le d�but*/
}
else
puts("Pb de lecture avec sscanf (format de ligne incorrect ?)") ;
nl++;
}
fclose( fic ) ;
}

Vous aimerez peut-être aussi