Remplacement de chaines de caractères dans un fichier

tigerskin Messages postés 39 Date d'inscription jeudi 26 mai 2005 Statut Membre Dernière intervention 24 juillet 2012 - 12 mai 2006 à 15:02
cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 - 12 mai 2006 à 16:20
Bonjour !!!


J'ai un problème : je souhaite réécrire une donnée dans un fichier par-dessus une autre donnée...le programme entre bien dans la condition (affichage d'une message box de test), accède bien au fichier (date de dernier accès correspond) mais ne récrit rien :(


Voila le code :


void COutil::WritePreusureInFile(char* diametre,int newpreusure)
{
FILE *fichier;
char diametre_fichier[5]={NULL},buffer[15]={NULL};
float diam1=0.00,diam2=0.00;
fichier=fopen("outil.cfg","r+");
if (fichier==NULL)
MessageBox(NULL,"Le fichier outil.cfg est introuvable","Erreur",MB_ICONSTOP);
else
{
for (int i=0;i<3;i++)
{
fscanf(fichier,"%s",&buffer);
}

while (!(feof(fichier)))
{
fscanf(fichier,"%s",&diametre_fichier);
diam1=atof(diametre_fichier);
diam2=atof(diametre);
if (diam1==diam2)
{
fscanf(fichier,"%s",&buffer);
fprintf(fichier,"%d",newpreusure);
}
else
{
fscanf(fichier,"%s",&buffer);
fscanf(fichier,"%s",&buffer);
}
}
fclose(fichier);
}
}

Quelqu'un peut-il m'aider ?????

Merci

1 réponse

cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
12 mai 2006 à 16:20
Je pense que dans ton cas tu aurait interet a travailler avec un fichier temporaire pour la modification des valeurs et de faire un rename("outil.tmp", "outil.cfg");
De plus quand tu fais des fscanf, je pense que le pointeur de fichier ce décale dans le fichier et donc tu récrit pas les données au même endroits

++
0
Rejoignez-nous