Modifier un fichier [Résolu]

Signaler
Messages postés
11
Date d'inscription
mercredi 14 avril 2004
Statut
Membre
Dernière intervention
22 septembre 2004
-
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
-
Voilà le but est que je puisse modifier un fichier .. donc le lire et dès que j'arrive à un char spécifique je dois écrire qqchose.

Je suppose que je dois faire ça plus ou moin comme ça ... mais ça ne marche pas...

flot = fopen("fichier.txt","r+");

while ( c= fgetc(flot),c!=EOF ) {
if ( c == 'F' ) { // Des que char arrive à la lettre F
fputs(modif,flot); // J'écrit
fflush(flot); // Je fais le transfer
fclose(flot); // Je ferme le fichier
}
}

Prq cela ne marche-t-il pas ?

Merci !

15 réponses

Messages postés
12
Date d'inscription
dimanche 3 août 2003
Statut
Membre
Dernière intervention
2 décembre 2004

Slt, je suis pas trop sur, mais je crois pas que tu puisse insere des carcateres, je te conseille plutot d'ouvrir ton fichier, et d'en faire une copie jusqua la lettre F ensuite tu rajoute ce ke tu veux ecrire et tu reprends la copie si besoin est.
Messages postés
12
Date d'inscription
dimanche 3 août 2003
Statut
Membre
Dernière intervention
2 décembre 2004

excuse je me suis peut-etre mal expliqué, je voulais dire que tu crée un autre fichier et que tu copie le contenu de ton fichier initial ds le nveau jusqua la lettre F...
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
retiens la pos et fais un rewind/fseek avant d'ecrire

fflush inutile avant fclose

pour etre plue efficace travail sur un buffer

while ( (c = fgetc(flot) )!= EOF )

fputc et pas fputs
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
while ( c= fgetc(flot),c!=EOF )
-> ca marche, mais je trouve pas ca très élégant: que vaut cette expression?

En fait tu n'a pas dit si tu veux insérer (dans ce cas il faut en effet créer un nouveau fichier), ou bien écraser (dans ce cas c'est bon, mais sort de la boucle quand tu trouves 'F').
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
djl> modif est sans doute un char*...
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
a oui c'est vrai
Messages postés
11
Date d'inscription
mercredi 14 avril 2004
Statut
Membre
Dernière intervention
22 septembre 2004

Hmm ... y a pas moyen d'être un peu plus concrêt ? j'comprend pas trop ce que je dois faire, fonction ?

A quoi sert le 'r+' alors si on ne peut pas l'utiliser comment moi j'ai fait ?
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Explique exactement ce que tu veux faire, donne un exemple concret.
Tu veux insérer du texte?
Messages postés
11
Date d'inscription
mercredi 14 avril 2004
Statut
Membre
Dernière intervention
22 septembre 2004

Ben enfête c'est pas très compliquer ... Imagine toi un fichier txt avec plein de nom différent par example..

Jean;Paul;Frederic;

Mais dans une autre fonction je voudrai par example ajouter leur âge...
Jean 18; Paul 21; Frederic 24;

Il doit bien y avoir une fonction pour faire ce genre de chose non ?
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Comme Pspice te l'a dit au début, tu vas devoir créer un nouveau fichier (t'iamgine le bordel si on pouvait insérer des caractères comme ca n'importe ou??). Tu copie ce qui t'arrange (les noms) et après chaque nom tu écris l'age.
Messages postés
11
Date d'inscription
mercredi 14 avril 2004
Statut
Membre
Dernière intervention
22 septembre 2004

Bon oki ... je vais tenter ça,
Cela dit mon truc était quand-même bien imaginer .. et je ne vois pas du tout prq ce serrait le bordel. Au contraire ... ce serrait bien plus facile. Tu lis chaque char avec un while et dès que t'arrive à une place spécifique tu peux mettre ce que tu veux.
Enfin bon .. ça n'existe pas, tant pis.
En tout cas merci à tous !
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Ca serait le bordel sur le disque dur: des que un insères un caractère, il faut décaler tous les suivants, ce serait bien plus long que de créer un nouveau fichier
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
XorCo > lit le fichier dans un buffer en faisant les modif, fais un rewind et ecris le buffer, pas de surprise si le fichier est plus gros
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
Enfin s'il est très gros ca devient problematique de tout mettre dans un buffer. Et comme on agrandit le buffer, on doit lire en une passe.
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
ba ca c'est a XorCo de voir en fonction de la taille des fichier, mais tant que ca fais pas plusieurs 100aines de mega apriori pas de pb

ouverture lecture/ecriture, lire contenu dans buffer, maj du fichier