recherche dans un fichier - C - Programmation
Marsh Posté le 05-09-2007 à 23:35:07
rien callé... il ressemble a quoi ton fichier ?
Marsh Posté le 05-09-2007 à 23:38:18
il ressemble a des enregistrement de ce type
lot =
rendement =
echanti=
bin1=
bin2=
...
bin6=
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 ?
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.
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.
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
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)
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
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
#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.