Quelle partie de "minimum mais complet" ne comprends-tu pas ?
Version imprimable
Quelle partie de "minimum mais complet" ne comprends-tu pas ?
voila c'est la fonction dans laquelle, j'instance la structure et je l'utilise:
Code:
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 unsigned char P_Lire_drSV(unsigned char *code, unsigned char *contexte_cps, DATE *DateSyst, NO_SEGMENT mynoappli) { unsigned char stat; unsigned char etat; unsigned short cr; /*DATE DateSyst;*/ /*unsigned char texte[2*16+1];*/ etat = 0x00; /*read_date (&DateSyst);*/ /* Preparation du message de lecture de la carte SV */ memcpy(&ucEmissMessage[6],contexte_cps,LG_CONTEXTE); memcpy(&ucEmissMessage[49],code,4); /* code porteur */ if (memcmp(&(DateSyst->annee),"50",2)<0) memcpy(&ucEmissMessage[61],"20",2); else memcpy(&ucEmissMessage[61],"19",2); memcpy(&ucEmissMessage[63],&(DateSyst->annee),2); memcpy(&ucEmissMessage[65],&(DateSyst->mois),2); memcpy(&ucEmissMessage[67],&(DateSyst->jour),2); usLgEmissMessage=69; /* Ouverture du lecteur carte, si necessaire */ if (stdcam0()==NULL) fopen("CAM0","rw"); else { fclose(stdcam0()); fopen("CAM0","rw"); } /* par defaut la carte */ cr=CAM0; /* Etat du lecteur CAM0 */ status(stdcam0(),&stat); /* pas de carte presente */ if (!(stat & CAM_PRESENT)) { cr=0; printf("%c CARTE VITALE\n ARRACHEE",0x1B); ttestall(0,200); } /* Carte en butee */ if ((cr & CAM0)) { /* Demande au gestionnaire d'executer l'ordre "Lecture droits Vitale"*/ APPLI_Dialogue(mynoappli,ucEmissMessage,usLgEmissMessage,ucRecepMessage,&usLgRecepMessage); /* A la sortie de l'EI96, la carte Vitale est hors tension */ /* La fonction APPLI_Dialogue ferme le peripherique CAM0 */ if (ucRecepMessage[0] == 0x00) { /*print_debug("1");*/ #ifdef LABO envoi_xmodem(ucRecepMessage+44,usLgRecepMessage-44,'V'); #endif /*print_debug("2");*/ MAJ_Donnees_PS(ucRecepMessage, 44); /* analyse espace mémoire disponible */ if (MAJ_Donnees_DroitsVitale(ucRecepMessage, usLgRecepMessage)) { etat = 0x01; } } else { int warning; warning=0; switch (ucRecepMessage[1]) { ..... } ttestall (0, 300); if (usLgRecepMessage==44) MAJ_Donnees_PS(ucRecepMessage, 44); #ifdef RAPIDO if(warning) { if (ucRecepMessage[0] == 0x03) { printf("%cREMONTEE\nDONNEES ADM.",0x1B); ttestall (0, 200); #ifdef LABO envoi_xmodem(ucRecepMessage+1+44,usLgRecepMessage-1-44,'V'); #endif MAJ_Donnees_PS(ucRecepMessage+1, 44); if (MAJ_Donnees_DroitsVitale(ucRecepMessage+1, usLgRecepMessage)) { etat = 0x02; } } else { printf("%cREMONTEE\nDONNEES ADM.",0x1B); ttestall (0, 200); MAJ_Donnees_PS(ucRecepMessage+1, 44); /* analyse espace mémoire disponible */ if (MAJ_Donnees_DroitsVitale(ucRecepMessage , usLgRecepMessage)) { etat = 0x02; } } } #endif } } return etat; }
Si je compile ça tout seul, j'aurais tes erreurs ?
Ça m'étonnerait...:roll:
Ben non. C'est pas complet.Citation:
Envoyé par moon93
Retire les '&', ce sont des tableaux...
Code:memcpy (ucEmissMessage + 63, DateSyst->annee, 2);
j'ai enlevé &, et j'ai eu le message d'erreur:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 src/Entry.c: In function `P_Lire_drSV': src/Entry.c:276: error: structure has no member named `annee' src/Entry.c:279: warning: passing arg 1 of `memcpy' makes pointer from integer without a cast src/Entry.c:280: error: structure has no member named `annee' src/Entry.c:280: warning: passing arg 1 of `memcpy' makes pointer from integer without a cast src/Entry.c:281: error: structure has no member named `mois' src/Entry.c:281: warning: passing arg 1 of `memcpy' makes pointer from integer without a cast src/Entry.c:282: error: structure has no member named `jour' src/Entry.c:282: warning: passing arg 1 of `memcpy' makes pointer from integer without a cast src/Entry.c:320: warning: implicit declaration of function `MAJ_Donnees_PS' src/Entry.c:323: warning: implicit declaration of function `MAJ_Donnees_DroitsVitale' src/Entry.c: In function `FFMS_Menu': src/Entry.c:593: warning: implicit declaration of function `TEST_SWIPE' make: *** [obj_gnu\Entry.o] Error 1
Ceci compile :Citation:
Envoyé par moon93
Mais comme tu refuses de donner ton code, on ne peut rien vérifer...Code:
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 #include <string.h> typedef struct { unsigned char jour[2]; unsigned char mois[2]; unsigned char annee[2]; unsigned char heure[2]; unsigned char minute[2]; unsigned char seconde[2]; } DATE; static int f (DATE * DateSyst) { unsigned char ucEmissMessage[100]; memcpy (ucEmissMessage + 63, DateSyst->annee, 2); memcpy (ucEmissMessage + 65, DateSyst->mois, 2); memcpy (ucEmissMessage + 67, DateSyst->jour, 2); return 0; } int main (void) { DATE DateSyst[] = { "01", "23", "45", "67", "89", "01", }; f (&DateSyst); return 0; }
(Et arrête de faire le malin...)
Ca n'a rien a voir mais...
ca depasse non?Citation:
Envoyé par Emmanuel Delahaye
Non, pourquoi ? La taille des tableau est fixée...Citation:
Envoyé par Gruik
http://emmanuel-delahaye.developpez....es.htm#tabchar
Ah oki, je croyais que c'était comme strcpy ,)
C'est juste que yaura pas le '\0'
Oui et que, malgré les apparences, ce ne sera pas une chaine valide.Citation:
Envoyé par Gruik
Ton probleme doit tout simplement venir de la position de la declaration de ta structure dans ton .h.
En effet, ton programme doit appele la structure alors que celle-ci n a pas encore ete declaree pour l ordi. Remonte la declaration de ta structure dans tn .h, je pense que cela devrait aller. (les messages de parse error sont generalement dues a ca.)