Recherche dans un fichier

langagec08 Messages postés 72 Date d'inscription mardi 30 mars 2010 Statut Membre Dernière intervention 22 août 2011 - 1 avril 2010 à 17:56
langagec08 Messages postés 72 Date d'inscription mardi 30 mars 2010 Statut Membre Dernière intervention 22 août 2011 - 2 avril 2010 à 21:42
bonjour,
est ce ke kelk 1 pourrait me dire comment puis chercher un mot dans un fichier et faire une modification en langage c.
mercii d'avance.

5 réponses

cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
1 avril 2010 à 18:37
fopen() & co. pour manipuler les fichiers.
strstr() pour trouver une chaine dans une autre chaine.

Y'a plus qu'à regarder comment s'en servir !
---
VB.NET is good ... VB6 is better
0
langagec08 Messages postés 72 Date d'inscription mardi 30 mars 2010 Statut Membre Dernière intervention 22 août 2011 1
1 avril 2010 à 19:02
mercii bcp pour ta reponse ,mais malheureusement j' ai po bi1 compri comment faire...ben voila un bout de mon code...cé un projet de gestion pharmaceutique le prob ke j ai, cé ke je ve faire une modification du prix dans le fichier:
typedef struct medicament{
int code;
char designation[50];
char datevali[20];
int prix;
int quantirest;
struct medicament *pointeur;
}medicament;
medicament *premier=NULL;
void ajouter(medicament *premier,int code,char *datevali,char *desi,int prix,int quant)//ajouter un nouveau medicament
{
medicament *p=(medicament *)malloc(sizeof(medicament));
p->code=code;
strcpy(p->designation,desi);
strcpy(p->datevali,datevali);
p->prix=prix;
p->quantirest=quant;
p->pointeur=premier;
premier=p;
printf("ajout termin\202!!");
}
void modifierprix(medicament *premier,char *medic,int prix)//modification prix dans la memoire
{
medicament *p; p=(medicament *)malloc(sizeof(medicament));
while(p!=NULL)
{
if(strcmp(p->designation,medic)==0)
{ p->prix=prix;return ;}
else
p=p->pointeur;
}
}
void sauvegarderenstock(FILE * fichier,medicament *premier)//pour enregistrer le medicament ajouté dans un fichier
{
medicament *p=premier;

fichier=fopen("stockmedicament.txt","a+");
if(fichier!=NULL)
{
fprintf(fichier,"*************stockmedicament************");
while(p!=NULL)
{
fprintf(fichier,"========================================");
fprintf(fichier,"Nom du medicament:%s\nSon code:%d\nDate de validit\202:%s\nPrix:%d\nquantit\202 en stock:%d\n",p->designation,p->code,p->datevali,p->prix,p->quantirest);
fprintf(fichier,"=====================================");
p=p->pointeur;
}
fclose(fichier);
}
}




merciii d'avance pour votre aide
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
2 avril 2010 à 20:49
Je te conseillerai de charger au démarrage de ton appli le fichier entier dans ta structure. Ensuite quand tu veux modifier quelque chose tu le fais en mémoire et lors de la fermeture de ton programme tu réécris le fichier.
---
VB.NET is good ... VB6 is better
0
langagec08 Messages postés 72 Date d'inscription mardi 30 mars 2010 Statut Membre Dernière intervention 22 août 2011 1
2 avril 2010 à 21:04
d'abord mercii pour té réponse,en fait j ai deja éssayé de faire ceci mé ça marche po car dé ke je ferme la console et je ve faire lé modification il ne reconné po lé chaine ke je lui passe meme s il existet deja......donc j ai laissé tombé cette methode et j' ai essayé de procéder comme suite:
void modifichierprix(FILE *fichier,char *medi,int prix)//je ve modifier le prix d'un mmedicament deja enregistré dans le fichier
{
char chaine[MAX];int nbre=0;char caracterelu; char ret[20];
fichier=fopen("stockmedicament.txt","r+");
if(fichier==NULL) { printf("erreur d ouvreture du fichier");}
if(fichier!=NULL)
{
while(fgets(chaine,MAX,fichier)!=NULL)
{ if(strcmp(medi,chaine))
{ printf("mot trouve\n");
do
{ printf("recherche...........");//rien que pour vérifié que ça rentre dans la boucle
fseek(fichier,+sizeof(char),SEEK_CUR);
caracterelu=fgetc(fichier);
if(caracterelu='\n')
nbre++;
}while(nbre!=4);
if(nbre==4)
{fseek(fichier,-sizeof(int),SEEK_CUR);
fwrite(&prix,sizeof(int),2,fichier);
return;}
}
}
fclose(fichier);
}
}
malheureusement ça se compile mais ri1 n é modifié.............
pleaaaaaaaaaaase aidé moi ...........
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
langagec08 Messages postés 72 Date d'inscription mardi 30 mars 2010 Statut Membre Dernière intervention 22 août 2011 1
2 avril 2010 à 21:42
en fait j ai oublié de mentionné que dans :
if(caracterelu='\n')
nbre++;
je compte le nonmbre de retour à la ligne car j ai le prix dans la 4éme ligne........
0
Rejoignez-nous