Bonjour,

J’ai besoin d’écrire un programme en c permettant de lire un fichier .txt. Les données dans le fichier sont présentées à l’intérieur sont présentées de la manière suivante :

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
 
0      0               0
1      -90.618         299.859 
2      -480.287        -366.363
3      -106.647        -202.037
4      -134.373        -364.665
5      -196.116        -43.097
6      455.724         -383.012
7      -232.731        -467.685
8      -138.385        -61.276
9       247.014        -461.857
10      74.257         373.238
11      -95.265        164.968
12      -211.651       -147.830
13      -265.178       499.830
14      -126.376       330.654
15      -267.075       499.830
16      -486.620       56.890
17      -368.762       -466.753
18      66.033         -456.440
19      234.876         57.177
20      22.466          -236.939
21      349.490         -205.735
22        302.043         -70.028
23        23.194          432.094
24       384.468          11.208
Ensuite je dois effectuer une opération de calcul et afficher les résulats sur l’écran.

Voici le code que j’ai fait.
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
79
80
81
82
83
84
85
86
87
88
89
90
91
#include<stdio.h>
#include <stdlib.h>
#include <math.h>
 
 
typedef struct
{
	int x;	//abscisse
	int y; //ordonnée
 
}Client;
 
 
Client donnees_clients[24];
int main()
{
 
	FILE *file = NULL;
	int i, j; 
 
double distance[24][24];
 
 
 
 
	if((file = fopen("D:\\calcul_distance_euclidienne\\calcul_distance_euclidienne\\donnees.txt", "r")) == NULL)/*ouverture du fichier en lecture*/
		printf("Error: impossible d'ouvrir fichier donnees.txt\n");
 
	else//non
	{
 
		while(fgetc(file)!='\n'); 
		for(i=0;i<24;i++)
		{
 
 
			j=fscanf(file,"%i %i %i\n",&i,&donnees_clients[i].x,&donnees_clients[i].y);
			if(j==EOF)
			{
			printf("fin de fichier !\n");
			break;
			}
 
 
			printf("donnees_clients[%i]\n\tx=%i\n\ty=%i\n", i, donnees_clients[i].x,donnees_clients[i].y);
		}
 
 
 
 
			for(i=0; i<24; i++)
			{
				for(j=0;j<i+1;j++)
				{
					if(i==j)
					{
						distance [i][j]= 0;
 
					}
 
					else
					{
						for(i=0; i<24; i++)
						{
							for(j=0;j<i+1;j++)
							{			
								distance [i][j] = distance [j][i];
								distance[i][j]= sqrt((donnees_clients[i].x - donnees_clients[j].x)*(donnees_clients[i].x - donnees_clients[j].x)+(donnees_clients[i].y - donnees_clients[j].y)*(donnees_clients[i].y - donnees_clients[j].y));
							}
						}
 
					}
				}
			  }
			for(i=0; i<24; i++)
			{
				for(j=0;j<24;j++)
				{
					printf("distance[%i][%i] = %4.2lf\n\n ",i, j, distance[i][j]);
				}
			}
 
 
 
	fclose(file);
	printf("\n fin de lecture\n");
	}
 
  getchar(); 
return(0);
}
Le programme se compile. Toutefois, il ne donne pas les bons résultats. Je crois que lors de l'écriture il lit que la première ligne et le premier caractére. Il ne passe pas au caractère suivant pour le lire. Je ne parviens pas à corriger celà

Quelqu’un pourrait-il m’aider ?
Merci.