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 2 fichiers txt


Sujet :

C

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 58
    Points : 30
    Points
    30
    Par défaut Comparer le contenu de 2 fichiers txt
    Bonsoir à tous, je voudrais comparer le contenu de 2 fichiers texte. Pour cela est ce que je peux utiliser la fonction strcmp() ?
    Sinon, que me conseillez vous?
    En vous remerciant par avance, passez une bonne soirée.

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Déjà, tu peux regarder la taille de tes fichiers. Si elles ne sont pas égales, c'est que les 2 fichiers sont différents. La taille des fichiers est une info facile et rapide à obtenir avec stat().

    Ensuite, tu lis tes 2 fichiers bloc de 1024 caractères par bloc 1024 caractères et tu compares tes 2 blocs avec la fonction memcmp().

    Il y a une petite subtilité pour gérer le dernier bloc de lecture si tes fichiers ne sont pas multiples de la taille de tes blocs de 1024.

    Une fois que ton algo est au point, tu peux jouer sur la taille de 1024 pour chercher ce qui donne les meilleurs résultats pour toi (fonction de ta machine et de la taille moyenne de tes fichiers)
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 58
    Points : 30
    Points
    30
    Par défaut
    OK, OK merci beaucoup pour ta réponse. Je vais essayer comme ça. J'aimerais savoir aussi si je peux utiliser toupper() pour convertir une chaîne de caractères en majuscules. Ce qui me choque c'est que dans le prototype de la fonction, on a toupper( int c) et que moi je veux manipuler une chaîne de caractères...

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Points : 1 750
    Points
    1 750
    Par défaut
    Citation Envoyé par romain_t Voir le message
    OK, OK merci beaucoup pour ta réponse. Je vais essayer comme ça. J'aimerais savoir aussi si je peux utiliser toupper() pour convertir une chaîne de caractères en majuscules. Ce qui me choque c'est que dans le prototype de la fonction, on a toupper( int c) et que moi je veux manipuler une chaîne de caractères...
    Je ne vois pas ce qu'il y a de choquant. La fonction est conçue pour convertir un caractère vers un autre.
    Pour convertir toute une chaine, il suffit de faire une boucle (à moins qu'il existe déjà une fonction standard qui le fait, je ne sais pas).

  5. #5
    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 : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Moi j'aurais une solution toute prête, cela ne te rend peut-être pas service du point de vue apprentissage mais sinon j'ai une bibliothèque de gestion de chaîne, voir ma signature, j'ai des fonctions toutes prêtes, peut-être pas toutes ultra optimisées mais c'est déjà un bon début, voici un exemple d'utilisation :

    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
    #include <stdio.h>
    #include <stdlib.h>
     
    #include "c_str.h"
     
     
    int main (void)
    {
       C_Str * my_str1 = C_Str_new_from_file ("main.c");
       C_Str * my_str2 = C_Str_new_from_file ("main.c");
     
       if (C_Str_compare_obj (my_str1, my_str2) == 1)
       {
          printf ("Châines identiques !\n");
       }
     
       C_Str_destroy (&my_str1);
       C_Str_destroy (&my_str2);
     
     
       return EXIT_SUCCESS;
    }
    Sinon, cela demande surement plus de mémoire car les deux fichiers seront chargés complètement mais ca marche

    Pour bien te former voir les cours et tutoriels C : http://c.developpez.com/cours/ et aussi la FAQ C : http://c.developpez.com/faq/
    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 !

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 58
    Points : 30
    Points
    30
    Par défaut
    Merci pour vos réponses. Je ne sais pas si vous êtes sur mac, mais xcode m'a affiché un résultat bizarre à l'execution d'un de mes programmes, genre :

    " 'mimetypeapplication/vnd.oasis.opendocument.textPWV=Configurations2/statusbar

    Je pense qu'il n'arrive pas à lire mon fichier .odt mais cela me semble bizarre.
    Dans le doute, j'ai mis un code du site et cela m'affiche la même chose...
    Pourtant j'ai bien renseigné l'endroit où j'ai mis mon fichier.odt

Discussions similaires

  1. Comparer/fusionner le contenu de 2 fichiers txt
    Par klef63 dans le forum VBScript
    Réponses: 12
    Dernier message: 10/07/2012, 10h17
  2. Réponses: 1
    Dernier message: 14/04/2006, 16h51
  3. [VB6] Contenu d'un fichier txt
    Par Sytchev3 dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 28/03/2006, 16h07
  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