Bonjour,

Je souhaite lire deux fichier, compter le nombre de lignes de chaque fichier et vérifier si les deux fichier sont cohérents (c'est-à-dire que le nombre de lignes du fichier 1 doit être égal au nombre de lignes du fichier 2) avant d'effectuer les calculs sur les données contenant dans ces fichiers.

Voici un bout de code ou plutôt la fonction censée faire ce que je souhaite et je vous fait part juste après des réponses du programme :
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
 
 
void vnlignes_fichiers(const char *fichier1, const char *fichier2)
{
int c1,c2;
int  nligfich1=0,nligfich2=0;
 
 
FILE *fich1;
FILE *fich2;
 
fich1=fopen(fichier1,"r");
 
if (fich1 != NULL){
 
while ((c1 = getc(fich1)) != EOF){
    if (c1 == '\n')
        ++nligfich1;
}
 
fclose(fich1);
 
}
else{
 
	fprintf(stdout,"\n");
	fprintf(stdout,"****************************************************************\n");
	fprintf(stderr,"Attention erreur : fichier  %s  introuvable \n",fich1);
       fflush(stderr);
	fprintf(stdout,"****************************************************************\n");
	fprintf(stdout,"\n");
 
	exit(10);
}
 
 
 
fich2=fopen(fichier2,"r");
 
if (fich2 != NULL){
 
while ((c2 = getc(fich2)) != EOF){
    if (c2 == '\n')
        ++nligfich2;
}
 
 
fclose(fich2);
 
}
else{
 
fprintf(stdout,"\n");
	fprintf(stdout,"****************************************************************\n");
	fprintf(stderr,"Attention erreur : fichier  %s  introuvable \n",fich2);
fflush(stderr);
	fprintf(stdout,"****************************************************************\n");
	fprintf(stdout,"\n");
 
	exit(11);
}
 
 
 
 if(nligfich1!=nligfich2){fprintf(stderr,"Attention erreur : le nombre de lignes du fichier %s doit etre egal au nombre de lignes du fichier %s \n",fich1,fich2);
 
fprintf(stdout,"nombre de lignes fichier 1 : %d\n",nligfich1);
 fprintf(stdout,"nombre de lignes fichier 2 : %d\n",nligfich2);
 
 exit(12);
 }
 else{
 
 fprintf(stdout,"Fichiers %s et %s correctes\n",fich1,fich2);
 
 }
 
}
Voici les deux fichiers :

fichier1.txt
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
0.0001
0.0001
0.
0.
0.
0.
0.
0.
fichier2.txt
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
1.0
-1.0
0.0
0.0
0.0
0.0
0.0
0.0
Les résultats renvoyés sont les suivants :

Nombre de lignes du fichier 1 : 0
Nombre de lignes du fichier 2 : 8

Ma question est la suivante :

Pourquoi les deux résultats sont différents? Le nombre de lignes est le même dans les deux cas. Pourtant, si j'oublie ce test préliminaire, les résultats sur les opérations effectuées avec les données de ces fichiers sont correctes donc les données sont bien lues. Le but ici étant simplement de compter le nombre de lignes des deux fichiers et de comparer les résultats.

Si quelqu'un peut m'aider à comprendre ce problème. Merci d'avance.