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 :

comment remplacer un mots dans un fichier texte ?


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Avatar de Spidermeu
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 147
    Par défaut comment remplacer un mots dans un fichier texte ?
    bonjour,
    je ne suis pas très caller en C, cela fait 6 mois que j'apprend ce langage (a l'école) et aujourdh'ui, je bloque sur une fonction a réaliser :

    je cherche a remplacer un mot ou une lettre dans un fichier texte par un autre.

    est-ce que c'est possible ?

    merci d'avance

    EDIT :

    //option est le mot a supprimer
    //arg est le nouveau mot
    //opt est le chemin du fichier texte

    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
    26
    rmpl(char option[],char arg[],char opt[])
    {
        char commande[K];
        char mot[K];
        FILE *fic;
        fic=fopen(opt,"a");
        if ((fic=fopen(opt,"r"))==NULL)
        {
            printf("Erreur\n");
        }
        else
        {
            while (feof(fic)==0))
            {
                fscanf(f1,"%s",&mot);
                compar=strcmp(mot,option)
                if (compar==1)
                {
                    mot=arg;
                }
                else
                {
                    //je sais pas quoi mettre;
                }
            }
        }
    je pense que c'est un debut mais je sais pas trop comment remplacer

  2. #2
    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 : 48
    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
    Salut,

    pourquoi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    fic=fopen(opt,"a");
    if ((fic=fopen(opt,"r"))==NULL)
    ??

    Soit en lecture soit en écriture mais les deux ensemble c'est pas faisable !
    En fait ce qu'il te faut faire, c'est avoir le fichier d'origine en lecture et un fichier temporaire en écriture, tu ne peux pas changer comme ca du texte dans un fichier sans passer par l'intermédiaire d'un fichier temporaire !

    Le plus simple serais de lire le fichier ligne par ligne avec fgets, rechercher le mot à remplacer dans la chaine, si le mot ne se trouve pas dans la chaine tu écrit le buffer dans le fichier temporaire, etc...
    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 !

  3. #3
    Membre éprouvé
    Avatar de granquet
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    1 201
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 201
    Par défaut
    pourquoi 2 fopen? tu pouvais directement tester fic sans refaire un fopen

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    fic=fopen(opt,"a");
        if ((fic=fopen(opt,"r"))==NULL)
    ce n'est pas comme ca que s'utilise la fonction feof.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
            while (feof(fic)==0))
    je te conseillerais d'utiliser autre chose que fscanf.
    pourquoi pas une lecture complete du fichier avec un fread (ou par gros blocs s'il est gros)? (voir la FAQ pour trouver la taille du fichier)
    sinon tu peux lire ligne par ligne avec fgets.

    pour recherche une chaine de char, tu peux utiliser la fonction strstr qui te renvois un pointeur sur l'element que tu cherche. ensuite a toi de reflechir pour remplacer ton mot.

    -Edit-
    faut que je tappe plus vite moi

  4. #4
    Membre confirmé
    Avatar de Spidermeu
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 147
    Par défaut
    je ne vois pas comment faire....

    en faites si j'utilise fgets, je pourrais lire la phrase que je stocke dans un tableau. Ensuite, il faudrait que je remplace le mot par l'autre... je ne vois pas comment

  5. #5
    Membre chevronné Avatar de Mayti4
    Inscrit en
    Février 2004
    Messages
    442
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 442
    Par défaut
    Il faut ouvrir un fichier en lecture, un autre en écriture.

    Tu lis les mots du premier fichier, si ce mot est recherché alors écris son remplaçant, sinon lui même.

  6. #6
    Membre confirmé
    Avatar de Spidermeu
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2006
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 147
    Par défaut
    donc ca :

    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
    26
    27
    28
    29
     
    //option est le mot a supprimer
     //arg est le nouveau mot
     //opt est le chemin du fichier texte
     
    rmpl(char option[],char arg[],char opt[])
    {
     
        char mot[K];
        FILE *fic;
        FILE *fic2;
     
        fic=fopen('temp.tmp',"w");
        fic2=fopen('fichier.txt',"r");
     
    while (feof(fic)==0))
    {
         fscanf(fic2,"%s",mot);
         res=strcmp(option,mot);
         if (res==1)
         {
               mot=arg;
         }
          else
         {
          //je sais pas quoi mettre
         }
         fprintf(fic,"%s",mot);
    }
    ?

  7. #7
    Membre éclairé Avatar de je®ome
    Inscrit en
    Octobre 2005
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 285
    Par défaut
    Je pense que en le faisant comme tu proposes, tu n'auras que le mot remplacé dans ton fichier temporaire.
    Il faudrait que à la lecture de chaque ligne ( utilise fgets ),

    si le mot s'y trouve, tu le remplace et écris cette ligne dans ton fichier temporaire,
    sinon tu écris la ligne lue dans ton fichier temporaire.

    J'espère que je n'ai pas raconté de conneries, car le C est également nouveau pour moi.
    ( Mais bon, si on ne se lance pas ...)

Discussions similaires

  1. [Batch] Remplacer un Mot dans un fichier texte
    Par PythonNovices dans le forum Scripts/Batch
    Réponses: 5
    Dernier message: 01/07/2015, 12h07
  2. Remplacer un mot dans un fichier texte
    Par Invité dans le forum VBScript
    Réponses: 2
    Dernier message: 08/08/2014, 14h56
  3. Comment chercher un mot dans un fichier texte et le modifier?
    Par Ange_1987 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 13/05/2009, 18h24
  4. Réponses: 3
    Dernier message: 27/06/2005, 16h24
  5. Réponses: 5
    Dernier message: 25/01/2005, 14h26

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