slt, j'ai besoin d'aide SVP!!
j'ai un mini projet de gestion d'une bibliothèque!! je dois implémenter un ensemble de fonctions :saise, tri, recherche...et je dois aussi implémenter les livres de la bibliothèque sous forme d'un tableau de structure livre de dim 1 et de taille 100...
mon prblème c'est que le nombre de livre sur lequl j'effectue toutes ces opérations est variable du coup il faut travailler avec des pointeurs...j'ai programmé un code et ça se compile mais il me sort une erreur'la mémoire ne peut pas être read'....voici mon code:
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
struct livre
{
int num_inv;
int annee_edition;
char titre[20], nom_auteur[20];
};
livre saisie()
{
livre L;
printf("\n\n\t Veuillez saisir les donnees du livre \n\n");
printf("Entrer le numero d'inventaire :\n");
scanf("%d", &L.num_inv);
printf("Entrer le titre du livre :\n");
scanf("%s", &L.titre);
printf("Entrer le nom de l'auteur :\n");
scanf("%s", &L.nom_auteur);
printf("Entrer l'annee d'edition :\n");
scanf("%d", &L.annee_edition);
return(L);
}
void affichage(livre L)
{
printf("\t\n Les caracteristiques du livre sont: \n\t Le numero d'inventaire: %d \n\t Le titre du livre: %s \n\t Le nom de l'auteur: %s \n\t L'annee d'edition: %d",L.num_inv,L.titre,L.nom_auteur,L.annee_edition);
}
void recherche(livre *m)
{
int i,n;
int numr;
printf("\n\nveuillez entrer le numero d'inventaire du livre recherche :");
scanf("%d",&numr);
m = (livre *)malloc(n * sizeof(int));
for (i=0;i<n;i++)
{
if ((*(m+i)).num_inv==numr)
{
printf("le livre recherche est disponible");
affichage(*(m+i));
}
}
}
void tri(livre *p)
{
int i,j,n;
p = (livre *)malloc(n * sizeof(int));
livre x;
for (j=0;j<n;j++)
{
for (i=0;i<j;i++)
if ((*(p+i)).num_inv < (*(p+i+1)).num_inv)
{
x=*(p+i);
*(p+i)=*(p+i+1);
*(p+i+1)=x;
}
}
for (i=0;i<n;i++)
affichage(*(p+i));
}
main()
{int n;
printf("\n\n\n\t\t\t=> Gestion de bibliotheque <=\n\n\n");
printf("\n\n\n\t\Veuillez entrer le nombre de livre que vous voulez saisir : \n\n\n");
scanf("%d",&n);
livre tab[100];
int i;
for(i=0; i<n; i++)
{
*(tab+i)=saisie();
}
for(i=0; i<n; i++)
{
affichage(*(tab+i));
}
printf("\n\n\nles livres tries par numero d'inventaire décroissant:\n\n\n");
recherche( &tab[0]);
tri( &tab[0]);
free(tab);
getch();
}
Merci d'avance