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 :

Concaténation de 2 fichiers txt


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif
    Inscrit en
    Novembre 2007
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 369
    Par défaut Concaténation de 2 fichiers txt
    bonjour,
    je voudrais savoir comment lire 2 fichiers txt avec ofstream ou autre méthode
    et concatener les 2 en un seul fichier txt

    j'ai trouvé ça
    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
     
    #include <iostream>
    #include <fstream>
    #include <string>
     
    using namespace std;
     
    int main()
    {
    int a;
    double b;
    char c;
    int t1[6];
    string s;
    int i;
    ifstream f("toto.txt");
     
    if(!f.is_open())cout<<"Impossible d'ouvrir le fichier en lecture !"<<endl;
    else
       {
       f>>a>>b>>c;
       for(i=0;i<6;i++)f>>t1[i];
       f>>s;
       }
    f.close();
    cout<<"a="<<a<<endl;
    cout<<"b="<<b<<endl;
    cout<<"c="<<c<<endl;
    for(i=0;i<6;i++)cout<<t1[i]<<endl;
    cout<<s<<endl;
    return 0;
    }
    mais ça marche pas
    merci

  2. #2
    Membre émérite Avatar de homeostasie
    Homme Profil pro
    Inscrit en
    Mai 2005
    Messages
    939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 939
    Par défaut
    je voudrais savoir comment lire 2 fichiers txt avec ofstream ou autre méthode
    et concatener les 2 en un seul fichier txt
    Tu veux le faire en C ou en C++? Car là, tu es partie sur du C++ et si c'est bien ton choix, ce n'est pas le bon forum!

  3. #3
    Inactif
    Inscrit en
    Novembre 2007
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 369
    Par défaut
    c pas grave, en c ou c++
    les deux me convient
    j'ai trouvé aussi cette fonction:
    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
     
    //une fonction qui recopie un fichier dans un autre :
     
    int copiefichier(char *dest, char *srce)
    // copie le fichier srce dans dest
    // renvoie 1 si ok, 0 sinon
    {
         ifstream fi(srce, ios::in|ios::binary);
         if (!fi) return 0;        // srce impossible à lire
         ofstream fo(dest, ios::out|ios::binary);
         if (!fo) return 0;
         char tampon;
         while ( fo && fi.get(tampon) )
               fo.put(tampon);
         return fo.good() && fi.eof();
    }
    mais je sais pas encore comment faire!!

  4. #4
    Membre expérimenté
    Inscrit en
    Octobre 2007
    Messages
    285
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Octobre 2007
    Messages : 285
    Par défaut
    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
     
    //une fonction qui recopie 2 fichiers dans un 3ème (nouveau) :
     
    int copiefichier(char *dest, char *srce1, char *srce2)
    // copie le fichier srce dans dest
    // renvoie 1 si ok, 0 sinon
    {
         ifstream fi1(srce1, ios::in|ios::binary);
         if (!fi1) return 0;        // srce1 impossible à lire
     
         ifstream fi2(srce2, ios::in|ios::binary);
         if (!fi2) return 0;        // srce2 impossible à lire
     
         ofstream fo(dest, ios::out|ios::binary);
         if (!fo) return 0;
     
         char tampon;
         while ( fo && fi1.get(tampon) )
               fo.put(tampon);
     
         while ( fo && fi2.get(tampon) )
               fo.put(tampon);
     
     
     
         return fo.good() && fi1.eof() && fi2.eof();
    }
    Quelques chose du genre devrait marcher...

  5. #5
    Inactif
    Inscrit en
    Novembre 2007
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 369
    Par défaut
    et j'écrit ou les nom de fichiers?
    en plus j'ai beaucoup de fichiers et non pas seulement 2
    j'ai juste dit 2 comme exemple.
    mes fichiers dans des repertoire différents mais je connais les noms de répertoire et les noms de fichiers sont tous nommé f1.txt

    j'ai trouvé ça mais ça marche pas je sais pas pourquoi
    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
     
    #include <fstream>   // std::ifstream, std::ofstream
    #include <string>    // std::string, std::getline()
    #include <iostream>  // std::endl
    int main ()
    {
       std::ifstream ifs ("toto.txt");
       std::ofstream ofs ("t.txt");
       std::string s;
       // la lecture d'une std::string dans un flux avec std::getline() s'arrête au premier
       // changement de ligne, mais ne conserve pas ce caractère dans la chaîne lue; cela
       // explique pourquoi on insère changement de ligne «artificiel» entre chaque
       // chaîne en sortie.
       while (std::getline (ifs, s))
          ofs << s << std::endl;
    }
    ya plein de code mais ça marche pas
    http://h-deb.clg.qc.ca/Sujets/AuSeco...#copier-lignes

  6. #6
    Membre expérimenté
    Inscrit en
    Octobre 2007
    Messages
    285
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Octobre 2007
    Messages : 285
    Par défaut
    Si, les exemples présentés marchent... ce sont juste des méthodes différentes...
    qu'il faut évidement adapter à ton problème.

    Tu as le mécanisme pour lire un fichier, un pour écrire dans un fichier, il faut juste trouver l'enchainement pour réaliser la concaténation de tous tes fichiers.

    Le principe :
    tant que fichiers à concaténés,
    copier le contenu dans fichier destination.

    Essaie de trouver l'architecture qui va bien, présente la nous et on te guidera le cas échéant.

    Bonne chance.

  7. #7
    Membre expérimenté
    Inscrit en
    Octobre 2007
    Messages
    285
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Octobre 2007
    Messages : 285
    Par défaut
    Même si ce n'est pas le bon forum (fais déplacer le sujet dans la rubrique appropriée) :

    L'exemple présenté ne fait pas de concaténation, il lit simplement un fichier et réalise l'affichage dans la sortie standard.

    Pour concaténer 2 fichiers dans un 3ème, il faut trois flux :
    2 flux pour les fichiers sources en mode lecture, et un flux en mode écriture pour le fichier de destination.
    Après tout dépend de la stratégie de concaténation et du type de donnés à manipuler.

    Mais si le but et de faire fichier3 = fichier1 puis fichier 2, il y a surement plus efficace que les flux (on a pas forcément besoin de "lire" le contenu des fichiers mais seulement de copier les datas brutes (pas besoins de les intépréter suivant leur type))

    [EDIT] Ma réponse arrive avec un message de retard ... [/EDIT]

    Qu'est ce qui ne va pas avec cette nouvelle fonction ?
    Elle copie le contenu du fichier 1 à la suite du contenu du fichier 2.

  8. #8
    Inactif
    Inscrit en
    Novembre 2007
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 369
    Par défaut
    1- je le déplace ou?
    2- en fait je veux juste copier le contenu de mes fichiers(2 ou plus) dans un autre fichier
    merci

Discussions similaires

  1. [WD11] Problème concaténation dans un fichier.txt
    Par juliendu01 dans le forum WinDev
    Réponses: 23
    Dernier message: 03/02/2012, 14h01
  2. [XL-2003] Concaténation de plusieurs fichiers .txt
    Par n.simona dans le forum Excel
    Réponses: 2
    Dernier message: 27/05/2011, 14h49
  3. c# 3.0 -> Concaténation de fichier .TXT
    Par Seth_75 dans le forum C#
    Réponses: 9
    Dernier message: 17/10/2008, 15h51
  4. Réponses: 3
    Dernier message: 28/05/2008, 16h30
  5. Comment concaténer deux fichiers *.txt ?
    Par thomcat dans le forum Général VBA
    Réponses: 11
    Dernier message: 11/04/2008, 23h47

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