kenzo751 | Bonjour, voila mon problème :
j'ai comme outil un fichier texte contenant des livres sous la forme:
-un numero
-un titre
-un auteur
Une structure livre est donc créer comme ceci :
Code :
- typedef struct livre{
- char *titre;
- char *auteur;
- int num;
- }Livre;
|
On m a donc demander de creer une fonction utilisant un tableau de pointeurs sur struc et permettant de lire n lignes du fichier pour les stockées dans la structure de données.
Des fonctions de lecture de texte m'ont été données pour lire les données du texte.
J'ai donc procédé ainsi :
Code :
- #include<stdio.h>
- #include<stdlib.h>
- #include<math.h>
- #include<string.h>
- #include "entree_sortie.h"
- #define TAILLEMAX 32
- #define TMAX 1024
- typedef struct livre{
- char *titre;
- char *auteur;
- int num;
- }Livre;
- void affiche(int n, char* nomfichier){
- FILE *f= fopen(nomfichier,"r" );
- if(f==NULL){
- fprintf(stderr,"ERREUR_OUVERTURE_FICHIER" );
- exit(1);
- }
- char Titre[TAILLEMAX];
- char Auteur[TAILLEMAX];
- int j,k;
- Livre** Tab=(Livre **)malloc(sizeof(Livre *)*TMAX);
- if(Tab==NULL){
- fprintf(stderr,"ERREUR_ALLOCTAB" );
- exit(1);
- }
- for(j=0;j<TMAX;j++){
- Tab[j]=NULL;
- }
- int ligne=0;
- while(ligne<n){
- int entier;
- entier= GetEntier(f);
- Skip(f);
- GetChaine(f,TAILLEMAX,Auteur);
- Skip(f);
- GetChaine(f,TAILLEMAX,Titre);
- SkipLine(f);
- Tab[ligne]=(Livre *)malloc(sizeof(Livre));
- if(Tab[ligne]==NULL){
- fprintf(stderr,"ERREUR_ALLOCTABLIGNE" );
- exit(1);
- }
- Tab[ligne]->titre=strdup(Titre);
- printf("%s ",Tab[ligne]->titre);
- Tab[ligne]->auteur=strdup(Auteur);
- printf("%s ",Tab[ligne]->auteur);
- Tab[ligne]->num=GetEntier(f);
- printf("%d\n",Tab[ligne]->num);
- ligne++;
- }
- fclose(f);
- }
- int main(){
- affiche(19,"GdeBiblio.txt" );
- return 0;
- }
|
Ce code compile et m'affiche les 19 entrées du fichier, cependant je dois maintenant creer une fonction qui recherche en fonction du numéro, apres plusieurs essai je ne trouve pas le bon protoype de fonction.
Merci de votre aide |