Bonjour,
à la compilation de ce programme, j'ai ces erreurs :
Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 couple.c: In function `Couple': couple.c:95: error: incompatible type for argument 1 of `strcpy' couple.c:105: error: incompatible type for argument 1 of `strcpy' couple.c:120: error: incompatible types in assignment couple.c:121: error: incompatible types in assignment couple.c: In function `main': couple.c:138: error: invalid operands to binary != couple.c:138: error: invalid operands to binary != couple.c:139: warning: format argument is not a pointer (arg 2) couple.c:139: warning: format argument is not a pointer (arg 3)
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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <assert.h> #define F "voisin" //Fonction qui avant tant qu'elle ne lit pas '\n' ou EOF void purge(FILE *fp) { int c; while ((c = fgetc(fp)) != '\n' && c != EOF) { } } //Fonction qui remplace '\n' par 0 void clean (char *s, FILE *fp) { /* Cherche ... */ char *p = strchr (s, '\n'); if (p != NULL) { /* ... supprime */ *p = 0; } else { purge (fp); } } typedef struct{ unsigned char x[4]; }t_ip; typedef struct { t_ip ip1; t_ip ip2; } t_couple; //Fonction qui rcupre les couples de valeur en lisant un fichier t_couple *Couple(FILE *fp) { int nb = 0 //nb element du tableau ,size = 5; //taille du tableau t_couple *tabCouple; // tableau qui recupere les couples tabCouple = (t_couple*)malloc (size * sizeof(t_couple)); if(tabCouple == NULL) { perror("erreur allocation\n"); return NULL; } if (fp == NULL) { perror(F); return NULL; } char line[BUFSIZ]; while(fgets(line, sizeof line, fp) != NULL) { clean(line, fp); // on supprime '\n' char *p = strtok(line,","); //p contient la 1ere IP if (p != NULL) { char *p1 = strtok(NULL,"\0"); //p1 contient la 2e IP if(nb == size) //si tableau trop petit { size += 16; //on augmente le taille tabCouple = realloc(tabCouple, size * sizeof(t_couple)); if (tabCouple == NULL) { perror("erreur allocation\n"); free(tabCouple); tabCouple = NULL; return tabCouple; } } /* //on insere la 1ere valeur du couple tabCouple[nb].ip1 = malloc((strlen(p)+1) * sizeof(t_couple)); if (tabCouple[nb].ip1 == NULL) { perror("erreur allocation\n"); free(tabCouple); tabCouple = NULL; return tabCouple; }*/ strcpy(tabCouple[nb].ip1,p); /* //on insere la 2d valeur du couple tabCouple[nb].ip2 = malloc((strlen(p1)+1) * sizeof(t_couple)); if (tabCouple[nb].ip2 == NULL) { perror("erreur allocation\n"); free(tabCouple); tabCouple = NULL; return tabCouple; }*/ strcpy(tabCouple[nb].ip2,p1); nb++;// on incremente le compteur nb element reel } else { printf ("format error\n"); break; } // on ferme le fichier fclose (fp), fp = NULL; } assert (fp == NULL); //on met NULL pour avoir un marqueur de fin de tableau tabCouple[nb].ip1 = NULL; tabCouple[nb].ip2 = NULL; return tabCouple; } int main(void) { int i; //Indice de boucle FILE * file = fopen("voisin","r"); //Fichier lire t_couple *tabCouple = Couple(file); if(tabCouple == NULL) { perror("erreur\n"); exit(1); } //Parcours du tableau de couple for(i=0; tabCouple[i].ip1!=NULL && tabCouple[i].ip2!=NULL; i++) printf("Couple : %s et %s\n", tabCouple[i].ip1, tabCouple[i].ip2); //fin du pgm return 0; }
Partager