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.
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.
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.
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...
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 :
Sinon, cela demande surement plus de mémoire car les deux fichiers seront chargés complètement mais ca marche
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; }
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 !
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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager