Modifier un fichier [Résolu]

XorCo 11 Messages postés mercredi 14 avril 2004Date d'inscription 22 septembre 2004 Dernière intervention - 18 sept. 2004 à 20:28 - Dernière réponse : cs_djl 3011 Messages postés jeudi 26 septembre 2002Date d'inscription 27 novembre 2004 Dernière intervention
- 18 sept. 2004 à 23:37
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 !
Afficher la suite 

Votre réponse

15 réponses

Meilleure réponse
Pspice 12 Messages postés dimanche 3 août 2003Date d'inscription 2 décembre 2004 Dernière intervention - 18 sept. 2004 à 20:42
3
Merci
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.

Merci Pspice 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de Pspice
Pspice 12 Messages postés dimanche 3 août 2003Date d'inscription 2 décembre 2004 Dernière intervention - 18 sept. 2004 à 20:48
0
Merci
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...
Commenter la réponse de Pspice
cs_djl 3011 Messages postés jeudi 26 septembre 2002Date d'inscription 27 novembre 2004 Dernière intervention - 18 sept. 2004 à 20:57
0
Merci
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
Commenter la réponse de cs_djl
vecchio56 6539 Messages postés lundi 16 décembre 2002Date d'inscription 22 août 2010 Dernière intervention - 18 sept. 2004 à 20:59
0
Merci
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').
Commenter la réponse de vecchio56
vecchio56 6539 Messages postés lundi 16 décembre 2002Date d'inscription 22 août 2010 Dernière intervention - 18 sept. 2004 à 21:02
0
Merci
djl> modif est sans doute un char*...
Commenter la réponse de vecchio56
cs_djl 3011 Messages postés jeudi 26 septembre 2002Date d'inscription 27 novembre 2004 Dernière intervention - 18 sept. 2004 à 21:05
0
Merci
a oui c'est vrai
Commenter la réponse de cs_djl
XorCo 11 Messages postés mercredi 14 avril 2004Date d'inscription 22 septembre 2004 Dernière intervention - 18 sept. 2004 à 22:48
0
Merci
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 ?
Commenter la réponse de XorCo
vecchio56 6539 Messages postés lundi 16 décembre 2002Date d'inscription 22 août 2010 Dernière intervention - 18 sept. 2004 à 22:51
0
Merci
Explique exactement ce que tu veux faire, donne un exemple concret.
Tu veux insérer du texte?
Commenter la réponse de vecchio56
XorCo 11 Messages postés mercredi 14 avril 2004Date d'inscription 22 septembre 2004 Dernière intervention - 18 sept. 2004 à 22:54
0
Merci
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 ?
Commenter la réponse de XorCo
vecchio56 6539 Messages postés lundi 16 décembre 2002Date d'inscription 22 août 2010 Dernière intervention - 18 sept. 2004 à 23:01
0
Merci
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.
Commenter la réponse de vecchio56
XorCo 11 Messages postés mercredi 14 avril 2004Date d'inscription 22 septembre 2004 Dernière intervention - 18 sept. 2004 à 23:05
0
Merci
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 !
Commenter la réponse de XorCo
vecchio56 6539 Messages postés lundi 16 décembre 2002Date d'inscription 22 août 2010 Dernière intervention - 18 sept. 2004 à 23:15
0
Merci
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
Commenter la réponse de vecchio56
cs_djl 3011 Messages postés jeudi 26 septembre 2002Date d'inscription 27 novembre 2004 Dernière intervention - 18 sept. 2004 à 23:19
0
Merci
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
Commenter la réponse de cs_djl
vecchio56 6539 Messages postés lundi 16 décembre 2002Date d'inscription 22 août 2010 Dernière intervention - 18 sept. 2004 à 23:24
0
Merci
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.
Commenter la réponse de vecchio56
cs_djl 3011 Messages postés jeudi 26 septembre 2002Date d'inscription 27 novembre 2004 Dernière intervention - 18 sept. 2004 à 23:37
0
Merci
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
Commenter la réponse de cs_djl

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.