IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

traitement texte d'un fichier


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    sos
    sos est déconnecté
    Membre averti
    Inscrit en
    Décembre 2003
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 17
    Par défaut traitement texte d'un fichier
    Bonjour tout le monde,
    Je voudrais traiter les textes de fichiers. Je veux supprimer les virgules, préceder les points par un espace ou bien faire des remplacements.
    Comment puis je faire cette opération automatiquement et obtenir des fichiers contenant ces textes traités
    Merci pour votre aide

  2. #2
    Membre averti
    Homme Profil pro
    Business Developer chez SoftFluent
    Inscrit en
    Juin 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Business Developer chez SoftFluent
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 38
    Par défaut
    Une methode tres "à la main" pour ce genre de besoin precis n'est pas très compliqué.

    Commence par ouvrir ton fichier:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int open(const char *pathname, int flags);
    Pour bufferiser le contenu du fichier:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ssize_t read(int fd, void *buf, size_t count);
    Et effectuer un parsing de ton buffer (chaine de caractere)
    (ne pas oublier d'allouer une chaine de caractere suffisament grande afin de stocker ce dont tu as besoin)

    Pour enfin write ton buffer dans ton fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ssize_t write(int fd, const void *buf, size_t count);
    Cependant si quelqu'un a une méthode + "simple" pour effectuer un besoin si précis, qu'il n'hésite pas à poster sa solution ou donner son avis.

    Bonne journée

  3. #3
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    il faudra que tu utilises les fonctions :

    • fopen
    • fgets
    • strchr
    • fprintf
    • fclose


    Mais d'abord il faut penser à ce que tu veux faire.

    Réfléchis. Ecris l'algorithme. Essaye de le coder. Si tu butes sur quelque chose, montre nous ce que tu as fait et on t'aidera..

  4. #4
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par adiekmann
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int open(const char *pathname, int flags);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ssize_t read(int fd, void *buf, size_t count);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ssize_t write(int fd, const void *buf, size_t count);
    Je déconseille l'usage de fonctions non standards, surtout quand des fonctions standards existent (fopen(), fread(), fwrite()). Mais pour un fichier texte, fgets(), fputs(), fprintf() est plus adapté, vu l'organisation en lignes de texte.

  5. #5
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Je déconseille l'usage de fonctions non standards, surtout quand des fonctions standards existent (fopen(), fread(), fwrite()). Mais pour un fichier texte, fgets(), fputs(), fprintf() est plus adapté, vu l'organisation en lignes de texte.
    +1
    Par contre, des qu'on utilise fgets ça implique de définir une longueur max de ligne (et de definir ce qu'il se passe si la ligne est trop grande). Si tu peux pas fixer de longueur max de ligne, il faudrait lire bloc de texte par bloc de texte avec fread (et l'algo devient bien plus compliqué)

  6. #6
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Sinon au pire, une lecture caractère par caractère avec fgetc mais je ne pense pas que ce soit la meilleur solution du point de vue des performance, faudrait tester éventuellement
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  7. #7
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par sos
    Je voudrais traiter les textes de fichiers. Je veux supprimer les virgules, préceder les points par un espace ou bien faire des remplacements.
    Comment puis je faire cette opération automatiquement et obtenir des fichiers contenant ces textes traités
    C'est assez complexe. Il faut bien définir les opérations à réaliser et penser aux cas tordus...

    Ensuite, il faut trouver un moyen (ligne de commande, fichier de commande, menu...) pour faire comprendre au programme quels traitements il doit effectuer.

    C'est surtout un gros travail de spécification.

    Ensuite, la conception et le codage devraient être assez simples. Les tests, un peu mois...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Reproduire un même traitement sur les autres fichiers texte d'un dossier
    Par capi81 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 13/07/2015, 19h09
  2. Programme de remplacement de texte dans des fichiers
    Par Invité4 dans le forum Linux
    Réponses: 13
    Dernier message: 12/11/2006, 16h06
  3. [langage] Remplacer du texte dans un fichier
    Par Michaël dans le forum Langage
    Réponses: 9
    Dernier message: 11/03/2005, 15h19
  4. Ajout de texte dans un fichier
    Par willowII dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 24/08/2004, 19h30
  5. [langage] Ecrire un bloc de texte dans un fichier
    Par sarahbes dans le forum Langage
    Réponses: 6
    Dernier message: 10/06/2004, 11h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo