Bonsoir
Je dispose d'un fichier contenant un ensemble de structures d'enregistrement.
Je souhaite extraire a partir de ce fichier les données de l'enregistrement correspondant a ma recherche pour les mettre dans une autre variable de type struct dont j'en aurais besoin par la suite pour remplir un tableau
j'ai essayer de creer une fonction qui en parcourant mon fichier verifiera pour chaque enregistrement si le contenu du champ de la variable "source"
(source.lot) correspond au contenu d'une variable de type char "code_lot" contenant le lot que je recherche.
Si cette condition est verifiée la variable de type struct "destination" prend la valeur des champs de "source" sinon "destination" est initialisée
Ma fontion prend en parametre (2 pointeur de type struct,et une variable te type char)
le premier pointeur pr parcourir mon fichier " sequentiellement " le deuxieme pour modifier la variable "destination".
voici mon code
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define lgfile 20
#define nbbin 6
/**definition de mon nouveau type de variable ***/
struct enre
{
char lot[100];
float rendement ;
float echant;
int bin[nbbin];
} ;
/**definition de ma fonction ***/
void MARECHERCHE( struct enre*source,struct enre*destination,char code_lot)
{
int i; /*** pour parcourir mon tableau bin[]**/
if ( strcmp (code_lot , source->lot) == 0)
{
destination->lot = source->lot;
destination->rendement = source->rendement;
destination->echant = source->echant;
for(i=0;i<nbbin;i++)
destination->bin[i]= source->bin[i];
}
else
{
destination->lot = 'r';
destination->rendement = 0;
destination->echant = 0;
for(i=0;i<nbbin;i++)
destination->bin[i]=0;
}
}
main()
/* creation de 2 variables de type "struct enre une pour mon fichier de lecture et une autre qui contiendras*/
/*les donnéesde l'enregistrement trouvé */
struct enre source ;
struct enre destination{'r',0,0,{0,0,0,0,0,0}} ;
char code_lot[100]; /** variable contenant mon critere de recherche **/
void MARECHERCHE(struct enre*,struct enre*,char);/** dcltion d ma fonc **/
.
.
.
.
/* lecture du fichier */
printf( "veuillez tapez votre code de lot : " );
gets(code_lot);
while (fread(&source,sizeof(source),1,input),!feof(input),destination={'r',0,0,{0,0,0,0,0,0}} ) /**tant que je lis & pas encore arrivé a la fin**/
{ void MARECHERCHE(&source,&destination,code_lot);
getchar();
}
if (destination={'r',0,0,{0,0,0,0,0,0}} )
{
printf("ce lot n'existe pas dans ce fichier" );
break;
}
.
.
deja pour l'algorithme je me demande si ya pas plus simple,
sinon pour les erreurs
il m'affiche ca ,
"""" non portable pointer assignment in function MARECHERCHE.... """""
"""" lvalue required in fuction MARE...."
+ reconnait pas la variable code_lot.
merci de m'aider.