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 :

supprimer texte entre deux chaine de caractere


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2009
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 39
    Par défaut supprimer texte entre deux chaine de caractere
    bonjour a tous,
    je desire effacer une partie d'un fichier entre deux chaine de caractere.
    j'ai essayer avec le code suivant mais ça ne marche pas. ça me copie le fichier comme il est sans rien effacer. je suppose qu'il ne trouve pas les chaine que je lui indique dans les boucle while.

    est ce que vous pouvez me dire comment faire mais en utilisant les CString?

    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
    30
    31
    32
    33
    int CCAODlg::modifier_fichier(char const * const source, char const * const destination)
    {
    	FILE* fSrc;
    	FILE* fDest;
    	char buffer[512];
    	int NbLus;
     
    	if ((fSrc = fopen(source, "rb")) == NULL)
    	{
    		return 1;
    	}
     
    	if ((fDest = fopen(destination, "wb")) == NULL)
    	{
    		fclose(fSrc);
    		return 2;
    	}
     
    	while (((NbLus = fread(buffer, 1, 512, fSrc)) != 0) && (buffer != ".BOARD_OUTLINE"))
    	{
     
    		fwrite(buffer, 1, NbLus, fDest);
    	}
    	while (((NbLus = fread(buffer, 1, 512, fSrc)) != 0) &&  (buffer != ".PLACEMENT"));
    	while ((NbLus = fread(buffer, 1, 512, fSrc)) != 0)
    	{
    		fwrite(buffer, 1, NbLus, fDest);
    	}
    		fclose(fDest);
    		fclose(fSrc);
     
    		return 0;
    }
    ps: c'est pour une application MFC avec Visual C++
    je vous remercie

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Par défaut
    ben et si tu demandais au forum C?

  3. #3
    Membre averti
    Inscrit en
    Novembre 2009
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 39
    Par défaut
    mais justement non...
    je travaille en c++ et j'ai besoin qu'on me dit comment le faire en c++

  4. #4
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    1 110
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Par défaut
    Mal parti alors. Ceci est du C
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    FILE* fSrc;
    FILE* fDest;
    char buffer[512];
    ...
    Mais si ça peut t'aider, voici une petite fonction qui m'aide très souvent:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void FindAndReplace(std::string & s,const char *os,unsigned oslen,const char *ns,unsigned nslen)
    {
    	if (os==0 || oslen==0)
    		return;
    	for (std::string::size_type pos=0;(pos=s.find(os,pos,oslen))!=s.npos;pos+=nslen)
    		s.replace(pos,oslen,ns,nslen);
    }

  5. #5
    Membre averti
    Inscrit en
    Novembre 2009
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 39
    Par défaut
    je sais que mon code est en C. comment remplacer tout cela en C++?
    a quoi sert cette fonction?

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    780
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2006
    Messages : 780
    Par défaut
    en C++ on utilise des std::string, des flux ( std::cout, std::fstream pour les fichiers, std::istringstream pour les opérations de string... )

    Dans ton cas le mieux est peut être de lire l'intégralité du fichier, puis d'effectuer le traitement que tu veux, et enfin le réécrire.

    Tu trouveras plein d'outils C++ dans la FAQ associé.

    Si tu veux utiliser des fopen etc.., il faut aller voir du côté du C

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

Discussions similaires

  1. [RegEx] Récupérer du texte entre deux chaines de caractères
    Par Globolite dans le forum Langage
    Réponses: 3
    Dernier message: 10/07/2014, 16h38
  2. Réponses: 1
    Dernier message: 02/12/2009, 16h18
  3. Supprimer du texte entre deux "balises"
    Par Monky dans le forum Microsoft Office
    Réponses: 5
    Dernier message: 12/03/2009, 17h18
  4. Réponses: 7
    Dernier message: 03/02/2006, 13h50
  5. supprimer texte entre deux balises specifiques
    Par HurtMarley dans le forum Langage
    Réponses: 2
    Dernier message: 31/01/2006, 18h30

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