Suppression de caractere ds fichier c++

Fermé
Eti38 Messages postés 55 Date d'inscription jeudi 24 juillet 2008 Statut Membre Dernière intervention 16 mars 2010 - 24 juil. 2008 à 15:10
cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 - 28 juil. 2008 à 14:26
Bonjour,
Je code en c++
Je souhaite lire les n premiers caracteres d'un fichier, et les supprimer a la fin de ma lecture.
J'ai essayé d'écrire le caractere 127 (suppr) en debut de fichier apres chaque lecture d'un caractere.
Je pensait que cela allait supprimer le caractere comme si j'appuyais sur la touche suppr de mon clavier...

Malheuresement; cela ne fait que le remplacer par ce caractere :  ...

Comment faire pour simuler le suppr du clavier
A voir également:

18 réponses

cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 131
28 juil. 2008 à 14:26
Le problème que tu poses est vieux comme l'informatique ou la mécanographie : Comment "RE-ECRIRE" ou même "INTERCALER" ou "ANNULER" ou "AJOUTER sauf en fin de fichier APPEND" un enregistremnt (ou un caractère) dans un fichier à organisation SEQUENTIELLE ?
Il n'y a pas de solution autre que celles qui consistent à recopier le fichier en tenant compte des modifications à lui apporter .
1
zzzer Messages postés 907 Date d'inscription dimanche 25 mai 2008 Statut Membre Dernière intervention 3 décembre 2023 181
24 juil. 2008 à 15:12
Tu pourrais aussi tout extraire dans une chaîne (lue à partir du fichier), lire les caractères que tu veux dans cette chaîne, supprimer les caractères dans cette chaîne et rebalancer la chaîne dans le fichier en écrasant le contenu précédent... Non ?

0
info_med Messages postés 11 Date d'inscription mercredi 3 octobre 2007 Statut Membre Dernière intervention 4 mars 2011
24 juil. 2008 à 15:13
ohhhh.....
c'est une erreur trés attendu alors simplement appuis sur la touch INS de clavier il revien automatique
si ca marche envoyer moi un message
a bien tot
0
Eti38 Messages postés 55 Date d'inscription jeudi 24 juillet 2008 Statut Membre Dernière intervention 16 mars 2010 2
24 juil. 2008 à 15:17
zzzer
Les fichier sont trés gros.
Donc je ne pourrais pas mettre tout ds une chaine.

info_med j'ai pas trop compris ce que tu propose:
Tu pense que je devrais écrire le caractere inser, puis ensuite le caractere suppr...?
0

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

Posez votre question
info_med Messages postés 11 Date d'inscription mercredi 3 octobre 2007 Statut Membre Dernière intervention 4 mars 2011
24 juil. 2008 à 15:25
no je dit appuis une celle fois sur la touche INS de clavier pour rendre l'ecriture normale sur le clavier
0
Eti38 Messages postés 55 Date d'inscription jeudi 24 juillet 2008 Statut Membre Dernière intervention 16 mars 2010 2
24 juil. 2008 à 15:36
Tu es sur d'avoir compris mon probleme????

Je suis en train de FAIRE UN PROGRAMME, qui:
- ouvre un fichier,
- lit les caractere
- etc

Je ne suis pas en train d'ecrire dans un editeur de texte comme wordpad...

Si quelqu'un a une idée......
0
info_med Messages postés 11 Date d'inscription mercredi 3 octobre 2007 Statut Membre Dernière intervention 4 mars 2011
24 juil. 2008 à 15:43
oh no je suis désolé mal compris
mais attend cherchez sur les forume de www.developpez.com
0
mich62120 Messages postés 631 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 21 janvier 2010 6
24 juil. 2008 à 15:47
Salut,
Tu peux essayer:
1- lire les n premier
2- puis le reste tu les lis mais pour les mettre dans un autre fichier texte temporaire
3- tu ecrase ton fichier par le fichier temporaire (qui n'a pas les n premiers).

Je pense pas que ce soit le plus simple mais cela marche.

Mich
0
zzzer Messages postés 907 Date d'inscription dimanche 25 mai 2008 Statut Membre Dernière intervention 3 décembre 2023 181
24 juil. 2008 à 15:55
mich62120> Comme il l'a dit, il s'agit de gros fichiers, donc s'il doit répéter cette instruction tout le temps, ça va demander un temps d'exécution énorme...

0
mich62120 Messages postés 631 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 21 janvier 2010 6
24 juil. 2008 à 16:03
Oui c'est vrai, ce n'est qu'une proposition parce que je ne sais pas comment faire autrement.
Il a dit qu'il ne pouvait pas mettre le tout dans une chaîne mais il n'a pas dit qu'il effectue le traitement tout le temps.
Après si c'est le cas je ne pas l'aider là tout de suite et j'ai pas trop le temps de chercher.
0
mich62120 Messages postés 631 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 21 janvier 2010 6
24 juil. 2008 à 16:14
Une autre proposition mais je ne sais pas si c'est faisable:

1/lire les n premiers
2/sans bouger la position du curseur (n+1) faire un /n pour mettre à la ligne tout le reste.
3/supprimer la première ligne.

?
0
Eti38 Messages postés 55 Date d'inscription jeudi 24 juillet 2008 Statut Membre Dernière intervention 16 mars 2010 2
28 juil. 2008 à 10:07
Comment supprimer cette ligne....???
0
mich62120 Messages postés 631 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 21 janvier 2010 6
28 juil. 2008 à 10:24
Il y a peu être un caractère de fin de ligne à détecter à partir du moment que touts la lignes et à supprimer.
Je sais qu'une fin de chaîne de caractère est symbolisé par '\0' mais une fin de ligne de texte je ne sais pas.
Peut être tout simplement '\n'.
Après comme je te le dis ce ne sont que des pistes sur lesquels je partirai je ne suis pas catégorique.
0
tinoeldorados
28 juil. 2008 à 11:40
Je reponds par une question :

Est ce que tu es oblige de faire ton operation en C++
car ce genre de manip sur un fichier texte peut etre fait depuis la ligne de commande (j'ai vu un linux dans ta config)

Car en C++ je ne vois pas non plus comment modifier un fichier sans le charger !!
quand tu ouvres un file c'eszt un pointeur vers une zone du disque donc tu ne pourras modifier le fichier vu que tu n'as qu'un pointeur vers le contenu du fichier ....
0
cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 131
28 juil. 2008 à 12:14
Bonjour,

Il y a quelque chose que ne comprends pas bien :

J'ai essayé d'écrire le caractere 127 (suppr) en debut de fichier apres chaque lecture d'un caractere.
Je pensait que cela allait supprimer le caractere comme si j'appuyais sur la touche suppr de mon clavier...


Quand tu as fait cette manip tu (ton programme) a(s) bien été obligé de recopier le reste des caractères dans un autre fichier (ou en mémoire, c'est peu probable compte tenu de la volumétrie du fichier) puis d'écraser l'ancienne version du fichier par la nouvelle contenant les "caractères 127" et le reste du fichier (ou renommer le fichier ayant servi à la recopie et effacer l'original si nécessaire).
Pourquoi ne fais-tu pas la même manip en ignorant les caractères correspondants lors de l'écriture dans le fichier en sortie ?
0
Eti38 Messages postés 55 Date d'inscription jeudi 24 juillet 2008 Statut Membre Dernière intervention 16 mars 2010 2
28 juil. 2008 à 13:48
Désolé,je ne comprend pas ce que tu as écrit....
0
cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 131
28 juil. 2008 à 13:56
C'est une interrogation sur la base de ce Zzzer à suggéré au post 2.
En d'autres termes; Commment as-tu réussi à intégrer la valeur 127 dans le fichier en remplacement de chaque caractère à éliminer?
0
mich62120 Messages postés 631 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 21 janvier 2010 6
28 juil. 2008 à 13:58
Je crois que 127 c'est le code la touche suppr non?
Il a essayer de rentrer le code la touche pour simuler une entrée, je crois qu'il y une fonction pour faire ça.
C'est ça ou je suis complètement à coté de la plaque?
0
cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 131
28 juil. 2008 à 14:08
Où c'est moi ............... !

Je vois les choses comme ça :

éééé suite du fichier à modifier .......................

Exécution du programme de traduction des éééé par 127127127127 (é = 127 en ASCII sur un octet)

127127127127 suite du fichier à modifier .......................
0
Eti38 Messages postés 55 Date d'inscription jeudi 24 juillet 2008 Statut Membre Dernière intervention 16 mars 2010 2
28 juil. 2008 à 14:10
oui c'est bien ce que j'ai essayé de faire mais je pense que ce n'était pas une bonne idée:
Je l'ai abandonnée et j'ai adopté la technique décrite par je ne sais plus qui:

>lecture des n caracteres dans le fichier fileX
>création d'un fichier temp
>recopie de fileX dedans(sauf les n caracteres lues)
>destruction de fileX
>renommage : temp -> fileX

j'espere qu'avec mes gros fichiers cela ne posera pas trop de probleme.

Je n'ai malheuresement pas encore la possibilités de tester sur ma vraie application.Sur des test a la con cette technique marche.

Au final bien que j'ai put contourner le problême, je ne suis pas sur de marquer cette discussion comme résolue, car le probleme de base n'a pas trouvé de solution, a savoir:
comment lire un fichier en "écrasant" ce que l'on lit....?

Je me demande si cela existe
0