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
|
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 260
typedef struct{
char nom[MAX], prenom[MAX];
int taille;
} t_element;
char* saisie (char* nom_fichier) {
printf("Saisir nom du fichier: ");
scanf ("%s", nom_fichier);
return nom_fichier;
}
t_element lire_element (FILE *p_file) {
t_element data;
fscanf(p_file, "%s", data.nom);
fscanf(p_file, "%s", data.prenom);
fscanf(p_file, "%d", &data.taille);
return data;
}
// fonction retourne 0 si les deux enregistrement sont différent
int comparer_data (const t_element data1, const t_element data2) {
return (data1.taille == data2.taille &&
!strcmp(data1.nom, data2.nom) &&
!strcmp(data1.prenom, data2.prenom));
}
int main (void) {
char FileName[MAX];
intersection(saisie(FileName),saisie(FileName));
return 0;
}
void intersection(const char* file1, const char* file2) {
FILE *p_file1 = fopen(file1,"r"); // mode lecture seule
if (!p_file1) {
printf("Erreur! Le fichier n'existe pas!\n"); return;
}
FILE *p_file2 = fopen(file2,"r");
if (!p_file2) {
printf("Erreur! Le fichier n'existe pas!\n"); return;
}
printf("Fichier résultat.\n");
char Name[MAX];
FILE *p_fileR = fopen(saisie(Name),"w");
if (!p_fileR) {
printf ("Erreur de création\n"); return;
}
t_element dataf1 = lire_element (p_file1);
while (!feof(p_file1))
{
rewind(p_file2); // se placer en début de fichier
t_element dataf2 = lire_element (p_file2);
while (!feof(p_file2)) {
if (comparer_data(dataf1, dataf2)) {
fprintf(p_fileR, "%s %s %d\n", dataf2.nom, dataf2.prenom, dataf2.taille);
break;
}
dataf2 = lire_element (p_file2);
}
dataf1 = lire_element (p_file1);
}
fclose(p_file2); fclose(p_file1); fclose(p_fileR);
printf("enregistrement terminé.\n");
return;
} |
Partager