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 :

Remplacer chaîne de caractère dans le bloc note


Sujet :

C

  1. #1
    Candidat au Club
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Juillet 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable de compte

    Informations forums :
    Inscription : Juillet 2015
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Remplacer chaîne de caractère dans le bloc note
    Bonjour,

    Je suis un très grand débutant de la programmation (à peine 2h en C....).

    Je souhaiterais remplacer le mot "true" par "false" dans un bloc notre qui contient plusieurs ligne de texte. Le mot "true" n'appraîtra qu'une fois.

    L'idée est de check si le dossier en question est vide dans un premier temps et dans ce cas, il ne se passe rien. Si un fichier texte existe, alors on exécute la procédure de remplacement.

    Pardon pour mon ignorance mais j'essaye d'apprendre.

    Cordialement.

    Mon code actuel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    #include <stdio.h>
    #include <stdlib.h>
     
    int main(int argc, char *argv[])
    {
        FILE* fichier = NULL;
     
        FILE* fichier2 = NULL;
     
        fichier = fopen("J:\\TRANSMISSION\\Emis\\freteurope\\Emis\\VIRSEPABNP.XML", "r+");
     
        if (fichier != NULL)
        {
        fichier2 = fopen(tempnam("J:\\TRANSMISSION\\Emis\\freteurope\\Emis", "Hello"), "r+");
     
        fclose(fichier);
        }
        else
        {
            // On affiche un message d'erreur si on veut
            printf("Impossible d'ouvrir le fichier test.txt");
        }
     
        return 0;
    }
    Mais bon pour l'instant, il ne fait rien...

  2. #2
    Expert confirmé
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Points : 4 182
    Points
    4 182
    Par défaut
    En premier lieu je pars de la supposition que c'est pour toi un exercice de programmation C et pas un cas d'utilisation pratique, car il y a des dizaines d'outils qui font de la substitution de texte bien plus efficacement qu'un programme C from scratch.


    La clef en développement logiciel (et particulièrement en C), c'est d'approcher un problème complexe en le décomposant en une suite de problèmes simples que l'on résoud à part, en s'assurant du bon fonctionnement du nouveau module avant de l'intégrer (tests unitaires, tout ça...).

    En quoi consiste ici la tâche qui t'incombe ?
    • parcourir une chaîne de caractères C, ANSI je suppose donc un char par caractère et terminée par '\0' ;
    • modifier le contenu d'une chaîne de caractères C ;
    • ouvrir et refermer un fichier, en prenant en charge les cas d'erreur (le fichier n'existe pas) ;
    • lire le contenu d'un fichier ouvert ;
    • écrire dans un fichier.


    Je te recommande dans un premier temps d'oublier l'aspect entrée-sortie (fichiers) et de commencer par un programme / une fonction qui remplace un mot par un autre à l'intérieur d'une chaîne arbitraire. On suppose toujours qu'il n'y a qu'une seule occurrence du mot à remplacer, ce qui simplifie la tâche.

    La « grande » difficulté de cette première tâche pour un débutant est que la chaîne de sortie peut-être plus longue que la chaîne d'entrée (c'est le cas en remplaçant true par false) et donc occuper plus d'espace en mémoire. On ne peut donc pas forcément utiliser le tampon d'entrée (le « tableau » de char où est stockée la chaîne) tel quel. On doit au choix :
    • utiliser un buffer statique mais renvoyer une erreur s'il y a dépassement de capacité en se basant sur la différence de longueur entre le motif d'entrée et celui de sortie ;
    • faire de l'allocation dynamique de mémoire.


    Je te proposerais bien un squelette à compléter mais je risquerais de taper trop haut, que sais-tu faire en C (manipulation de tableau, de chaîne, gestion de mémoire...) ?

Discussions similaires

  1. [MySQL] Remplacer une chaîne de caractères dans une base de données
    Par Furius dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 27/11/2013, 21h06
  2. Réponses: 0
    Dernier message: 19/01/2009, 10h00
  3. Remplacement de nombreux caractères dans une chaîne
    Par Jean_Peuplus dans le forum Cobol
    Réponses: 3
    Dernier message: 04/11/2008, 15h06
  4. Remplacer une chaîne de caractère dans un gros fichier
    Par dosilbr dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 06/03/2007, 13h38
  5. Remplacer une chaîne de caractères dans une base
    Par Furius dans le forum Requêtes
    Réponses: 4
    Dernier message: 19/10/2005, 23h03

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