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 le contenu de fichiers


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 112
    Par défaut Comparer le contenu de fichiers
    Salut, chers developpeurs!
    Je suis en train de vouloir comparer les contenus de deux fichiers. En fait j'essaie de lire le fichier, stocke les valeurs dans l'arrays seq1[] et seq2[].
    Puis je compare les deux arrays.
    Mais ca ne fonctionne pas!!!!

    Qu'est ce que je fait de mal? Comment dois-je m'y prenndre?

    Voici en fait le code que j'ai ecrit:
    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
     
    #include <stdio.h>
    #include <stdlib.h>
     
     
    #define MAX      100
     
     
    int main()
    {
        double *seq1, *seq2;
        FILE *fichier;
        char *ch;
        int i = 0;
     
       seq1 = (double *)calloc(MAX, sizeof(double));
       seq2 = (double *)calloc(MAX, sizeof(double));
       ch = (char *)calloc(MAX, sizeof(char));
     
       fichier = fopen("fichier1.txt", "rt");
       while(!feof(fichier))
       {
           fgets(ch, MAX, fichier);
           sscanf(ch, "%lf", &seq1[i]);
           i++;
       }
       fclose(fichier);
     
       fichier = fopen("fichier2.txt", "rt");
       while(!feof(fichier))
       {
           fgets(ch, MAX, fichier);
           sscanf(ch, "%lf", &seq2[i]);
           i++;
       } 
       fclose(fichier)
     
       for(i=0; i<MAX; i++)
       {
           if(seq1[i] == seq2[i]
               continue;
           else
           {
                printf("Difference à l'element seq[%d] de la sequence\n", seq[i]);
                break;
           }
       }
     
       return 0;
    }
    Merci de votre aide

    Merlinerick

  2. #2
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par merlinerick Voir le message
    Qu'est ce que je fait de mal? Comment dois-je m'y prenndre?
    Déjà, tu peux corriger ç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
     
    Compilateur: Default compiler
    Building Makefile: "C:\dev\forums\Makefile.win"
    Exécution de  make...
    make.exe -f "C:\dev\forums\Makefile.win" all
    gcc.exe -c main.c -o main.o -I"C:/Dev-Cpp/include"  -I"/clib"    -Wextra -Wall -O2
     
    main.c: In function `main':
    main.c:38: error: syntax error before "for"
    main.c:38: error: syntax error before ')' token
    main.c:45: error: break statement not within loop or switch
    main.c: At top level:
    main.c:47: error: syntax error before '}' token
     
    main.c: In function `main':
    main.c:38: warning: statement with no effect
     
    make.exe: *** [main.o] Error 1
     
    Exécution terminée
    Mais surtout, la comparaison de 2 fichier c'est quelque chose qu'il faut bien définir. Si tu veux une exactitude parfaite, une comparaison octet par octet à la volée est très simple. En gros
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    int a,b;
     
    while ((a = fgetc(fp_a)) != EOF && (b = fgetc(fp_b)) != EOF && a == b)
    {
    }
     
    if (a == EOF &&  b == EOF)
    {
       puts("IDENTICAL");
    }
    Mais il peut y avoir des critères de comparaison plus souples, qui ignorent les 'blanks', par exemple...

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 112
    Par défaut
    Citation Envoyé par Emmanuel Delahaye Voir le message
    Déjà, tu peux corriger ç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
     
    Compilateur: Default compiler
    Building Makefile: "C:\dev\forums\Makefile.win"
    Exécution de  make...
    make.exe -f "C:\dev\forums\Makefile.win" all
    gcc.exe -c main.c -o main.o -I"C:/Dev-Cpp/include"  -I"/clib"    -Wextra -Wall -O2
     
    main.c: In function `main':
    main.c:38: error: syntax error before "for"
    main.c:38: error: syntax error before ')' token
    main.c:45: error: break statement not within loop or switch
    main.c: At top level:
    main.c:47: error: syntax error before '}' token
     
    main.c: In function `main':
    main.c:38: warning: statement with no effect
     
    make.exe: *** [main.o] Error 1
     
    Exécution terminée
    Mais surtout, la comparaison de 2 fichier c'est quelque chose qu'il faut bien définir. Si tu veux une exactitude parfaite, une comparaison octet par octet à la volée est très simple. En gros
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    int a,b;
     
    while ((a = fgetc(fp_a)) != EOF && (b = fgetc(fp_b)) != EOF && a == b)
    {
    }
     
    if (a == EOF &&  b == EOF)
    {
       puts("IDENTICAL");
    }
    Mais il peut y avoir des critères de comparaison plus souples, qui ignorent les 'blanks', par exemple...

    Merci Emmanuel pour ta reaction.
    J'ai pu resoudre le probleme. Le constat que j'ai fait est que je devait choisir deux indice differents pour les tableaux, c'est à dire declarer i et j; Je ne sais pas pourquoi. Mais en gros, le code que j'ai utilisé est presque le même que j'a envoyé (bien sûr ayant corrigé les erreurs que tu as signalées).

    une fois de plus merci

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

Discussions similaires

  1. Comparer le contenu de fichiers
    Par M.L.G. dans le forum Général Python
    Réponses: 2
    Dernier message: 27/04/2012, 10h42
  2. Comparer le contenu d'une table avec un fichier csv
    Par cdo22 dans le forum Requêtes
    Réponses: 3
    Dernier message: 21/11/2008, 18h35
  3. Réponses: 2
    Dernier message: 17/10/2007, 16h15
  4. comparer le contenu de 2 fichiers
    Par vins25 dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 20/03/2006, 07h04
  5. Comment comparer le contenu de 2 fichiers ?
    Par steph_1 dans le forum Langage
    Réponses: 4
    Dernier message: 17/06/2005, 18h38

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