Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2568 connectés 

  FORUM HardWare.fr
  Programmation
  C

  traitement d'un fichier

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

traitement d'un fichier

n°1902315
msedirim
Posté le 04-07-2009 à 20:39:36  profilanswer
 

Salut,
J'ai un fichier texte bien formé contient deux champs: objet et attribut.
tous les objets sont des entiers et tous les attributs sont de chaines de caractères de même taille.
chaque ligne contient un objet et son attribut par exemple:
 
essai.txt:
 
1    11100
 
2    10101
 
3    01001
 
4    10001
 
 
Je voudrais supprimer les 0 de même position dans chaque chaine de caractère.
Par exemple dans notre cas, nous allons supprimer les 0 dans la position 4 de chaque chaine car dans cette position nous avons toutes les chaines sont à 0.
 
j'ai trouvé une difficulté de résoudre ce problème, de plus imaginez si nous avons un fichier volumineux.
 
Mon idée:
je parcoure seulement la première ligne de fichier. Pour tout 0 de chaine de première ligne je teste si je trouve dans la même position où je trouve 0 de chaine de première ligne dans les chaines des autres lignes.
Cette solution este théorique. Imaginez si nous avons un fichier volumineux.De plus la perte de curseur et de position.
 
 
SVP, j'ai besoin de vos aides.

mood
Publicité
Posté le 04-07-2009 à 20:39:36  profilanswer
 

n°1902340
Sve@r
Posté le 04-07-2009 à 23:47:08  profilanswer
 

T'es obligé de traiter 2 fois ton fichier. La première fois pour vérifier si tous les chiffres d'une position sont identiques puis la seconde fois pour supprimer ledit chiffre.
 
De plus, on ne fait pas de lecture/écriture sur le même fichier car dangereux.
 
Donc la solution est de
1) faire une première lecture. Cette lecture servira à marquer tous les chiffres identiques d'une même position.  
2) tu fais une seconde lecture où tu copies chaque ligne dans un second fichier en enlevant les chiffres identifiés comme identiques
3) tu effaces l'ancien et renommes le nouveau fichier


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1902350
msedirim
Posté le 05-07-2009 à 08:39:51  profilanswer
 

Salut,  
1)  
je voudrais supprimer la colonne qui contient 0: supprimer des chaines les 0 de même position ?
 
Dans la première lecture, pourquoi on marque tous les chiffres identiques d'une même position ?
 
J'ai trouvé une difficulté de gérer la position de curseur et la manière de supprimer ces 0. est ce que ceci avec décalage?
 

n°1902419
Sve@r
Posté le 05-07-2009 à 21:24:44  profilanswer
 

msedirim a écrit :

Salut,  
1)  
je voudrais supprimer la colonne qui contient 0: supprimer des chaines les 0 de même position ?
 
Dans la première lecture, pourquoi on marque tous les chiffres identiques d'une même position ?
 
J'ai trouvé une difficulté de gérer la position de curseur et la manière de supprimer ces 0. est ce que ceci avec décalage?
 


 
Houla, je crois qu'il y a incompréhension de part et d'autre.
 
Moi j'ai compris que ton problème était de supprimer, pour chaque ligne, les chiffres identiques sur une même position comme le montre ton exemple
1    11100
2    10101
3    01001
4    10001
Et donc c'est parce que le chiffre de la 4° position est le même sur toutes les lignes qu'on peut le supprimer.
 
Si c'est bien ça, t'es obligé, avant de supprimer ce 4° chiffre, de vérifier d'abord qu'il est identique sur toutes les lignes donc de faire une première lecture de ton fichier.
Et donc pendant cette lecture, autant en profiter pour marquer toutes les positions identiques. C'est pas compliqué. Tu définis un tableau de positions que tu mets toutes à 1. Puis à chaque ligne lue, tu compares la ligne avec la ligne précédente. Et pour chaque position qui diffère tu mets l'élément de ton tableau à 0.
En fin de fichier, les éléments de ton tableau encore à 1 indiqueront les positions des caractères identiques pour toutes les lignes. De là, il deviendra très facile de générer un 2° fichier où ces caractères auront été supprimés de leurs lignes...


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1902621
Pat333
Posté le 06-07-2009 à 12:01:05  profilanswer
 

Sve@r a écrit :

T'es obligé de traiter 2 fois ton fichier.


 
Certainement pas. On ne lit jamais 2 fois un même fichier (règle d'or depuis la nuit des temps !)
Surtout avec des fichiers > 2Go, tu fais ça en Prod dans une banque, tu es viré sur le champ.
On lit en mémoire et on parse.  
C'est tout.

n°1902864
msedirim
Posté le 06-07-2009 à 19:58:55  profilanswer
 

Salut,
 
Pat333, pouvez-vous détailler votre solution ?

n°1902887
tpierron
Posté le 06-07-2009 à 20:38:45  profilanswer
 

Pat333 a écrit :

Certainement pas. On ne lit jamais 2 fois un même fichier (règle d'or depuis la nuit des temps !)
Surtout avec des fichiers > 2Go, tu fais ça en Prod dans une banque, tu es viré sur le champ.
On lit en mémoire et on parse.  
C'est tout.


 [:prozac] T'en a pas marre de jouer les fachos ? Tu vois, moi je travaille dans l'imprimerie, si tu t'amuses à un lire de plus de 2Go en RAM, tu passes vraiment pour un guignol.

n°1904615
Emmanuel D​elahaye
C is a sharp tool
Posté le 11-07-2009 à 16:37:53  profilanswer
 

Pat333 a écrit :

 

Certainement pas. On ne lit jamais 2 fois un même fichier (règle d'or depuis la nuit des temps !)
Surtout avec des fichiers > 2Go, tu fais ça en Prod dans une banque, tu es viré sur le champ.
On lit en mémoire et on parse.
C'est tout.


Pat333 = Stephen135 et de nombreux autres pseudos. Facilement reconnaissables à la constance du propos...


Message édité par Emmanuel Delahaye le 11-07-2009 à 16:38:13

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1904631
Elmoricq
Modérateur
Posté le 11-07-2009 à 20:10:13  profilanswer
 

Pat333 a écrit :


 
Certainement pas. On ne lit jamais 2 fois un même fichier (règle d'or depuis la nuit des temps !)
Surtout avec des fichiers > 2Go, tu fais ça en Prod dans une banque, tu es viré sur le champ.
On lit en mémoire et on parse.  
C'est tout.


 
Mince. J'ai pas encore été viré.  [:eraser17]

n°1904747
Sve@r
Posté le 12-07-2009 à 23:12:58  profilanswer
 

msedirim a écrit :

Pat333, pouvez-vous détailler votre solution ?


Non il peut pas vu qu'il a ouvert grand sa bouche sans réfléchir.
 

Pat333 a écrit :

Certainement pas. On ne lit jamais 2 fois un même fichier (règle d'or depuis la nuit des temps !)
...
On lit en mémoire et on parse.  
C'est tout.


 
Si tu lis bien mes propos, j'ai écrit "traiter" pas lire donc ce traitement peut très bien être fait depuis la mémoire (bien que je n'aie pas peur d'avouer que je pensais quand-même à un traitement fait depuis le disque dur). Toutefois que ce soit depuis la mémoire ou depuis le disque dur, le traitement (ce que toi tu appelles "parser" ) sera malgré tout fait 2 fois.
 

Pat333 a écrit :

tu fais ça en Prod dans une banque, tu es viré sur le champ.


Chaque problème entraine une solution différente. Dans une banque, t'as rarement besoin de vérifier l'intégralité d'un fichier avant de traiter ses infos. Mais bon, je ne vois même pas pourquoi j'essaye de t'instruire vu la réputation que tu sembles avoir au vu des nombreux autres avis qui ont ponctué ton pauvre post.


Message édité par Sve@r le 12-07-2009 à 23:44:36

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  traitement d'un fichier

 

Sujets relatifs
Pouvoir faire le traitement de mon .bat pr chaque fichier selectionneMacro excel pour traitement fichier word
Traitement d'une fonction Ping avec une liste de PC ds un fichier exltraitement d'un fichier texte.
traitement dans un fichier texteTraitement automatique d'un fichier
Lecture de fichier HTML pour un traitementtraitement d'un fichier texte
traitement de fichier[SHELL BATCH] Aide sur traitement de fichier de log
Plus de sujets relatifs à : traitement d'un fichier


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR