langagec08
Messages postés72Date d'inscriptionmardi 30 mars 2010StatutMembreDernière intervention22 août 2011
-
1 avril 2010 à 17:56
langagec08
Messages postés72Date d'inscriptionmardi 30 mars 2010StatutMembreDernière intervention22 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.
langagec08
Messages postés72Date d'inscriptionmardi 30 mars 2010StatutMembreDernière intervention22 août 20111 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);
}
}
cs_ghuysmans99
Messages postés3983Date d'inscriptionjeudi 14 juillet 2005StatutMembreDernière intervention30 juin 201316 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
langagec08
Messages postés72Date d'inscriptionmardi 30 mars 2010StatutMembreDernière intervention22 août 20111 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 ...........
Vous n’avez pas trouvé la réponse que vous recherchez ?
langagec08
Messages postés72Date d'inscriptionmardi 30 mars 2010StatutMembreDernière intervention22 août 20111 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........