recherche dans un fichier

recherche dans un fichier - C - Programmation

Marsh Posté le 05-09-2007 à 23:05:27    

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  :pt1cable:  
 
#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.
 

Reply

Marsh Posté le 05-09-2007 à 23:05:27   

Reply

Marsh Posté le 05-09-2007 à 23:35:07    

rien callé... il ressemble a quoi ton fichier ?


---------------
Blog photo/récits activités en montagne http://planetcaravan.net
Reply

Marsh Posté le 05-09-2007 à 23:38:18    

il ressemble a des enregistrement de ce type
 
lot =  
rendement =
echanti=
bin1=
bin2=
...
bin6=

Reply

Marsh Posté le 05-09-2007 à 23:40:52    

donen un exemple (en francais) de ce que tu as, et de ce que tu cherche
je comprends aps ce que tu cherche a faire dans ton programme
qu'est ce que tu appelle lot ?


---------------
Blog photo/récits activités en montagne http://planetcaravan.net
Reply

Marsh Posté le 06-09-2007 à 00:05:03    

je vais essayer d'etre plus clair .
l'objectif est de realiser un programme qui permet d'identifier les enregistrement de mon fichier a partir des données saisie.  

Reply

Marsh Posté le 06-09-2007 à 04:57:45    

Euuuuuhhh, ne le prends pas mal, mais es-tu sur que c'est bien dans la catégorie C que tu voulais poster ton message ?
 
Ton code n'a ni queue ni tête, je ne sais pas si c'est en voulant montrer juste le strict minimum, mais tel quel c'est du total n'importe quoi. Je te conseille de tout remettre à plat, prend un tutoriel sur le C, ou mieux un langage de plus haut niveau.

Reply

Marsh Posté le 06-09-2007 à 12:01:19    

aaaaaa, je suis debutant en c, ne m'en voulez.  
tpierron pour le code j'ai mis le minimum mais je crois que tu as raison je devrais prendre un tutoriel sur le c, je n'ose pas passer a un langage de plus haut niveau !  
je reorganise mes idées,je revois des cours et je reviens :)  
merci a vous deux

Reply

Marsh Posté le 06-09-2007 à 15:57:23    

zaytouna a écrit :

aaaaaa, je suis debutant en c, <...> je devrais prendre un tutoriel sur le c, je n'ose pas passer a un langage de plus haut niveau !


"Haut niveau", ça ne veut pas dire plus difficile, au contraire...

 

Le C est difficile, entre autre parce qu'il est 'le plus bas des langages de haut niveau' (L3G).

 

Pour apprendre les principes de base de la programmation, un langage comme python ou ruby est suffisant.Par contre, il faut accepter la notion d'abstraction et ne pas chercher à savoir ce qui se passe 'en-dessous'.

 

Le C permet de comprendre un certain nombre de mécanismes de base, mais on est encore loin de la machine...

 

En gros, on pourrait classer les langages impératifs de 3ème génération (L3G) comme ceci :

 


VB (OO), Python (OO), Ruby (OO)
Perl
Delphi (OO)
Java (OO), C# (OO)
C, C++ (OO)

 

(à compléter)


Message édité par Emmanuel Delahaye le 07-09-2007 à 13:51:42

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 07-09-2007 à 13:41:48    

C'est sur qu'en Java il irai super vite et aurai un code plus simple. Apres sans notions objet se lancer dans d'autres langages ca peut etre dur.
 
Mais c'est vrai que quand on a fait un peu de java, fait son programme ca prends p'tet une apres-midi a peine.
 
Si en plus ils prends le XML pour son fichier données vive la fête :D


---------------
| AMD Ryzen 7 7700X 8C/16T @ 4.5-5.4GHz - 64GB DDR5-6000 30-40-40 1T - AMD Radeon RX 7900 XTX 24GB @ 2680MHz/20Gbps |
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed