Rechercher : dans
Par :

Suppression de caractere ds fichier c++

Dernière réponse le 28 jui 2008 à 14:26:31 Eti38, le 24 jui 2008 à 15:10:29 
 Signaler ce message aux modérateurs

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

Configuration: Linux Debian
Mozilla 1.8.1.14

Meilleures réponses pour « suppression de caractere ds fichier c++ » dans :
Parser un fichier binaire en PHP Voir Supposons que vous ayez enregistré des données binaires dans un fichier, c'est-à-dire un enregistrement brut qui n'est pas traduit en texte. C'est une chose que l'on fait couramment avec certains langages de bas niveau comme le C ou le...
[Windows] Impossible de supprimer un fichier ou un dossier VoirSi Windows n'arrive pas à supprimer un fichier ou un dossier, la cause peut être l'une des suivantes : Le fichier ou le dossier à supprimer est utilisé par un processus du système Le dossier à supprimer contient des fichiers ou dossiers cachés ...
Fichier hiberfil.sys à la racine du disque VoirVous avez constaté la présence d'un fichier nommé hiberfil.sys situé dans C:\hiberfil.sys ? Il s'agit d'un fichier temporaire créé par Windows afin de stocker l'état de sa mémoire vive afin de se mettre en veille prolongée (hibernation). Pour...
Restaurer un fichier supprimé par erreur VoirComment restaurer un fichier ? Vous avez supprimé un fichier par erreur ? Rien n'est perdu. Il se trouve peut-être dans la Corbeille. Pour vérifier si le fichier peut être récupéré, ouvrez la corbeille (qui se trouve sur le Bureau). Faire un...
Les chaînes de caractères en C++ VoirQu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C++, une...
Langage C - Les chaînes de caractères VoirQu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C, une chaîne...
Caractéristiques du langage C VoirLe fichier source Le fichier source d'un programme écrit en langage C est un simple fichier texte dont l'extension est par convention .c. Note d'un visiteur (J.Grondin) : L'extension est en minuscules. Le .C (majuscule) est interprété par...

1

zzzer, le 24 jui 2008 à 15:12:54

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 ?

N'oubliez pas de marquer la discussion comme résolue dès que­ c'est le cas ! -> En haut de la page, Statut: Résolu
Attention aussi à bien respecter la 6e règle de la charte : 

Rédiger les messages dans un langage clair sans abréviations, style télégraphique ou mode SMS

Répondre à zzzer

2

info_med, le 24 jui 2008 à 15:13:05

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

Répondre à info_med

3

Eti38, le 24 jui 2008 à 15:17:51

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...?

Répondre à Eti38

4

info_med, le 24 jui 2008 à 15:25:46

No je dit appuis une celle fois sur la touche INS de clavier pour rendre l'ecriture normale sur le clavier

Répondre à info_med

5

Eti38, le 24 jui 2008 à 15:36:27

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......

Répondre à Eti38

6

info_med, le 24 jui 2008 à 15:43:39

Oh no je suis désolé mal compris
mais attend cherchez sur les forume de www.developpez.com

Répondre à info_med

7

mich62120, le 24 jui 2008 à 15:47:35

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 "Lu et à prouver"    Mich

Répondre à mich62120

8

zzzer, le 24 jui 2008 à 15:55:32

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...

N'oubliez pas de marquer la discussion comme résolue dès que c'est le cas ! -> En haut de la page, Statut: Résolu
Attention aussi à bien respecter la 6e règle de la charte : 

Rédiger les messages dans un langage clair sans abréviations, style télégraphique ou mode SMS

Répondre à zzzer

9

mich62120, le 24 jui 2008 à 16:03:22

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. "Lu et à prouver"    Mich

Répondre à mich62120

10

mich62120, le 24 jui 2008 à 16:14:02

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.

?
"Lu et à prouver"    Mich

Répondre à mich62120

11

Eti38, le 28 jui 2008 à 10:07:11

Comment supprimer cette ligne....???

Répondre à Eti38

12

mich62120, le 28 jui 2008 à 10:24:18

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. "Lu et à prouver"    Mich

Répondre à mich62120

13

tinoeldorados, le 28 jui 2008 à 11:40:41

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 ....

Répondre à tinoeldorados

14

cchristian, le 28 jui 2008 à 12:14:25

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 ?
Cordialement.

Cchristian.

Répondre à cchristian

15

Eti38, le 28 jui 2008 à 13:48:36

Désolé,je ne comprend pas ce que tu as écrit....

Répondre à Eti38

16

cchristian, le 28 jui 2008 à 13:56: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? Cordialement.

Cchristian.

Répondre à cchristian

17

mich62120, le 28 jui 2008 à 13:58:54

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?
"Lu et à prouver"    Mich

Répondre à mich62120

18

cchristian, le 28 jui 2008 à 14:08:59

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 .......................
Cordialement.

Cchristian.

Répondre à cchristian

19

Eti38, le 28 jui 2008 à 14:10: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

Répondre à Eti38

20

 cchristian, le 28 jui 2008 à 14:26:31

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 . Cordialement.

Cchristian.

Répondre à cchristian
Collection CommentÇaMarche.net