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 :

Comparer 2 fichiers


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 41
    Par défaut Comparer 2 fichiers
    Bonjour à tous,

    Voilà, je débute dans la programmation en C++ et on me demande de comparer les lignes de 2 fichiers et de ressortir dans un fichier les lignes qui ont changées, qui sont en plus.

    Voici déjà mon code, qui permet d'ouvrir les deux fichiers en question, de récupérer deux colonnes de ces fichiers (fichier.csv sous forme de colonne) et d'écrire ces colonnes dans deux fichier .txt differents.

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
     
    // Tri Titres-Tarifs.cpp*: définit le point d'entrée pour l'application console.
    //
     
    ////////////////////////////////////////////////////////////////////////////////////////////////
    ///                                                                             Travail demandé:                                                                        ///
    ///                                                                                                                                                                                      ///
    /// Ecrire un programme en C/C++ qui permettrait de, tout dabord trier les titres des            ///
    /// magazines par ordre alphabetique, avec leur nombre et le total de leurs tarifs.                      ///
    /// Il faudra ensuite faire la moyenne de ces tarifs pour chaque magazines.                                      ///
    ///                                                                                                                                                                                      ///
    ////////////////////////////////////////////////////////////////////////////////////////////////
     
     
    /////////////////////
    /// Bibliothèques ///
    /////////////////////
     
    #include <stdafx.h>
    #include <string>
    #include <fstream>
    #include <iostream>
    #include <sstream>
    #include <cassert>
    using namespace std;
     
     
    ////////////////////////////////
    /// Déclaration de Variables ///
    ////////////////////////////////
     
    string colonne1;
    string colonne2;
    string colonne3;
    string colonne4;
    string colonne5;
    string colonne6;
    string colonne7;
    string colonne8;
     
    string colonne_1;
    string colonne_2;
    string colonne_3;
    string colonne_4;
    string colonne_5;
    string colonne_6;
    string colonne_7;
    string colonne_8;
     
     
    ///////////////////////////
    /// Programme Principal ///
    ///////////////////////////
     
    int _tmain(int argc, _TCHAR* argv[])
    {
    	// Ouverture du fichier 20090727-TABLES_EDI.csv en lecture.
    	ifstream fichier1("C:\\Documents and Settings\\bastien\\Bureau\\Offres - Tables EDI Excel\\20090727-TABLES_EDI.csv");
    	if ( fichier1.is_open ( ) == false )	// Test de l'ouverture du fichier1.
    	{
    		cout << "Erreur lors de l'ouverture du fichier 20090727-TABLES_EDI.csv" << endl;
    		assert ( false );
    		return -1;
    	}
     
    	// Ouverture du fichier Ecriture du fichier2.txt en écriture.
    	ofstream fichier2("C:\\Documents and Settings\\bastien\\Bureau\\Ecriture du fichier2.txt");
    	if ( fichier2.is_open ( ) == false )	// Test de louverture du fichier2
    	{
    		cout << "Erreur lors de l'ouverture du fichier Ecriture du fichier2" << endl;
    		assert ( false );
    		return -1;
    	}
    		string ligne; // variable contenant chaque ligne lue
     
            // cette boucle s'arrête dès qu'une erreur de lecture survient
            while ( getline( fichier1, ligne ) )
            {
    			getline( fichier1, colonne1, ';' );
                //cout << colonne1 << endl;
     
    			getline( fichier1, colonne2, ';' );
                //cout << colonne2 << endl;
     
    			getline( fichier1, colonne3, ';' );
                //cout << colonne3 << endl;
     
    			getline( fichier1, colonne4, ';' );
                //cout << colonne4 << endl;
     
    			getline( fichier1, colonne5, ';' );
                //cout << colonne5 << endl;
     
    			getline( fichier1, colonne6, ';' );
                //cout << colonne6 << endl;
     
    			getline( fichier1, colonne7, ';' );
                //cout << colonne7 << endl;
     
    			getline( fichier1, colonne8);
                //cout << colonne8 << endl;
     
    			cout << colonne1<< "\t" << colonne4 << endl;
     
     
    			fichier2 << colonne1 << "\t"<< colonne4 << endl;	// On écrit les deux colonnes qui nous intérresses.
            }
     
     
     
    		// Ouverture du fichier 20090727-TABLES_EDI.csv en lecture.
    	ifstream fichier3("C:\\Documents and Settings\\bastien\\Bureau\\Offres - Tables EDI Excel\\20090731-TABLES_EDI.csv");
    	if ( fichier3.is_open ( ) == false )	// Test de l'ouverture du fichier3.
    	{
    		cout << "Erreur lors de l'ouverture du fichier 20090731-TABLES_EDI.csv" << endl;
    		assert ( false );
    		return -1;
    	}
     
    	// Ouverture du fichier Ecriture du fichier4.txt en écriture.
    	ofstream fichier4("C:\\Documents and Settings\\bastien\\Bureau\\Ecriture du fichier4.txt");
    	if ( fichier4.is_open ( ) == false )	// Test de louverture du fichier4
    	{
    		cout << "Erreur lors de l'ouverture du fichier Ecriture du fichier4" << endl;
    		assert ( false );
    		return -1;
    	}
    		string ligne1; // variable contenant chaque ligne lue
     
            // cette boucle s'arrête dès qu'une erreur de lecture survient
            while ( getline( fichier3, ligne1 ) )
            {
    			getline( fichier3, colonne_1, ';' );
                //cout << colonne1 << endl;
     
    			getline( fichier3, colonne_2, ';' );
                //cout << colonne2 << endl;
     
    			getline( fichier3, colonne_3, ';' );
                //cout << colonne3 << endl;
     
    			getline( fichier3, colonne_4, ';' );
                //cout << colonne4 << endl;
     
    			getline( fichier3, colonne_5, ';' );
                //cout << colonne5 << endl;
     
    			getline( fichier3, colonne_6, ';' );
                //cout << colonne6 << endl;
     
    			getline( fichier3, colonne_7, ';' );
                //cout << colonne7 << endl;
     
    			getline( fichier3, colonne_8);
                //cout << colonne8 << endl;
     
    			cout << colonne_1<< "\t" << colonne_4 << endl;
     
     
    			fichier4 << colonne_1 << "\t"<< colonne_4 << endl;	// On écrit les deux colonnes qui nous intérresses.	
            }
     
    	return 0;
    }

    Mon problème est désormais de comparer ces deux fichiers entre eux. :s

    J'ai pensé mettre le contenu des deux fichiers dans deux tableaux différents et ensuite comparer les tableaux entre eux, mais mon code ne fonctionne pas. Le compilateur me renvoit l'erreur "Erreur 1 error C2059: erreur de syntaxe*: ']' ".

    Voici le code (Changement uniquement à la fin)

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
     
    // Tri Titres-Tarifs.cpp*: définit le point d'entrée pour l'application console.
    //
     
    ////////////////////////////////////////////////////////////////////////////////////////////////
    ///                                                                             Travail demandé:                                                                        ///
    ///                                                                                                                                                                                      ///
    /// Ecrire un programme en C/C++ qui permettrait de, tout dabord trier les titres des            ///
    /// magazines par ordre alphabetique, avec leur nombre et le total de leurs tarifs.                      ///
    /// Il faudra ensuite faire la moyenne de ces tarifs pour chaque magazines.                                      ///
    ///                                                                                                                                                                                      ///
    ////////////////////////////////////////////////////////////////////////////////////////////////
     
     
    /////////////////////
    /// Bibliothèques ///
    /////////////////////
     
    #include <stdafx.h>
    #include <string>
    #include <fstream>
    #include <iostream>
    #include <sstream>
    #include <cassert>
    using namespace std;
     
     
    ////////////////////////////////
    /// Déclaration de Variables ///
    ////////////////////////////////
     
    string colonne1;
    string colonne2;
    string colonne3;
    string colonne4;
    string colonne5;
    string colonne6;
    string colonne7;
    string colonne8;
     
    string colonne_1;
    string colonne_2;
    string colonne_3;
    string colonne_4;
    string colonne_5;
    string colonne_6;
    string colonne_7;
    string colonne_8;
     
     
    ///////////////////////////
    /// Programme Principal ///
    ///////////////////////////
     
    int _tmain(int argc, _TCHAR* argv[])
    {
    	// Ouverture du fichier 20090727-TABLES_EDI.csv en lecture.
    	ifstream fichier1("C:\\Documents and Settings\\bastien\\Bureau\\Offres - Tables EDI Excel\\20090727-TABLES_EDI.csv");
    	if ( fichier1.is_open ( ) == false )	// Test de l'ouverture du fichier1.
    	{
    		cout << "Erreur lors de l'ouverture du fichier 20090727-TABLES_EDI.csv" << endl;
    		assert ( false );
    		return -1;
    	}
     
    	// Ouverture du fichier Ecriture du fichier2.txt en écriture.
    	ofstream fichier2("C:\\Documents and Settings\\bastien\\Bureau\\Ecriture du fichier2.txt");
    	if ( fichier2.is_open ( ) == false )	// Test de louverture du fichier2
    	{
    		cout << "Erreur lors de l'ouverture du fichier Ecriture du fichier2" << endl;
    		assert ( false );
    		return -1;
    	}
    		string ligne; // variable contenant chaque ligne lue
     
            // cette boucle s'arrête dès qu'une erreur de lecture survient
            while ( getline( fichier1, ligne ) )
            {
    			getline( fichier1, colonne1, ';' );
                //cout << colonne1 << endl;
     
    			getline( fichier1, colonne2, ';' );
                //cout << colonne2 << endl;
     
    			getline( fichier1, colonne3, ';' );
                //cout << colonne3 << endl;
     
    			getline( fichier1, colonne4, ';' );
                //cout << colonne4 << endl;
     
    			getline( fichier1, colonne5, ';' );
                //cout << colonne5 << endl;
     
    			getline( fichier1, colonne6, ';' );
                //cout << colonne6 << endl;
     
    			getline( fichier1, colonne7, ';' );
                //cout << colonne7 << endl;
     
    			getline( fichier1, colonne8);
                //cout << colonne8 << endl;
     
    			cout << colonne1<< "\t" << colonne4 << endl;
     
     
    			fichier2 << colonne1 << "\t"<< colonne4 << endl;	// On écrit les deux colonnes qui nous intérresses.
            }
     
     
     
    		// Ouverture du fichier 20090727-TABLES_EDI.csv en lecture.
    	ifstream fichier3("C:\\Documents and Settings\\bastien\\Bureau\\Offres - Tables EDI Excel\\20090731-TABLES_EDI.csv");
    	if ( fichier3.is_open ( ) == false )	// Test de l'ouverture du fichier3.
    	{
    		cout << "Erreur lors de l'ouverture du fichier 20090731-TABLES_EDI.csv" << endl;
    		assert ( false );
    		return -1;
    	}
     
    	// Ouverture du fichier Ecriture du fichier4.txt en écriture.
    	ofstream fichier4("C:\\Documents and Settings\\bastien\\Bureau\\Ecriture du fichier4.txt");
    	if ( fichier4.is_open ( ) == false )	// Test de louverture du fichier4
    	{
    		cout << "Erreur lors de l'ouverture du fichier Ecriture du fichier4" << endl;
    		assert ( false );
    		return -1;
    	}
    		string ligne1; // variable contenant chaque ligne lue
     
            // cette boucle s'arrête dès qu'une erreur de lecture survient
            while ( getline( fichier3, ligne1 ) )
            {
    			getline( fichier3, colonne_1, ';' );
                //cout << colonne1 << endl;
     
    			getline( fichier3, colonne_2, ';' );
                //cout << colonne2 << endl;
     
    			getline( fichier3, colonne_3, ';' );
                //cout << colonne3 << endl;
     
    			getline( fichier3, colonne_4, ';' );
                //cout << colonne4 << endl;
     
    			getline( fichier3, colonne_5, ';' );
                //cout << colonne5 << endl;
     
    			getline( fichier3, colonne_6, ';' );
                //cout << colonne6 << endl;
     
    			getline( fichier3, colonne_7, ';' );
                //cout << colonne7 << endl;
     
    			getline( fichier3, colonne_8);
                //cout << colonne8 << endl;
     
    			cout << colonne_1<< "\t" << colonne_4 << endl;
     
     
    			fichier4 << colonne_1 << "\t"<< colonne_4 << endl;	// On écrit les deux colonnes qui nous intérresses.	
            }
     
    		char Tab1[] = {0};
    		char Tab2[] = {0};
     
    		Tab2[] = fichier4;
    		Tab1[] = fichier2;
     
    		if(Tab1[] != Tab2[])
    			cout << "Les fichiers ne sont pas identiques" << endl;
     
    		fichier2.close();	// on referme le fichier2.
    		fichier1.close();	// on referme le fichier1.
    		fichier4.close();	// on referme le fichier4.
    		fichier3.close();	// on referme le fichier3.
     
    	return 0;
    }
    J'espere avoir été assez précis dans ce que je dis et que vous pourrez m'aider.

    Merci d'avance

    Kira

  2. #2
    Membre chevronné
    Inscrit en
    Août 2004
    Messages
    556
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 556
    Par défaut
    En l'occurance, char Tab[] désigne un tableau de caractères, fichier3/fichier4 sont des flux de fichiers. Comment veux-tu que le compilateur sache comment faire fonctionner ces 2 types ensemble ?

    De plus tu ne peux pas tester l'égalité de 2 tableaux statiques de cette manière, il faut tester chaque élément du tableau un par un.

    Passe plutôt par des vector à 2 dimensions, 1 pour les colones et un pour les lignes.

    Ensuite, tu pourras tester 2 vector parr l'égalité.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 41
    Par défaut
    erf. merci de ta réponse.
    En effet, quand j'enlevais les [], le compi me disais qu'il y avait des soucis de convertions dans les types.

    J'ai plus qu'à apprendre comment utiliser les vecteurs en C++.

    Merci

Discussions similaires

  1. [File]Comparer 2 fichiers
    Par onlytoine dans le forum Entrée/Sortie
    Réponses: 8
    Dernier message: 05/12/2005, 17h24
  2. Fonction c qui compare deux fichiers ???
    Par babyface dans le forum C
    Réponses: 4
    Dernier message: 19/11/2005, 13h07
  3. Comparer 2 fichiers
    Par GuiltyX dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 10/11/2004, 01h35
  4. [LG][FAQ]comparer des fichiers
    Par lucke dans le forum Langage
    Réponses: 11
    Dernier message: 01/06/2003, 18h02
  5. Comparer des fichiers de données : Quel Langage ?
    Par Anonymous dans le forum Langages de programmation
    Réponses: 6
    Dernier message: 24/04/2002, 22h37

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