Bonjour à tous,
J'ai un léger problème : Je n'arrive pas à attribuer un int à un autre int. Tout simplement. Je ne sais pas à quoi c'est due, puisque je ne pense pas faire d'erreur dans mon code, mais je me trompe peut-être...
Voici mon code :
Ma structure :
Ensuite mes structures pointées :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 struct InfoTrait { ZoneExitDerivation_str zoneDerivation_str; /* zone de communication avec lexit dérivation*/ ZoneExitAccueil_str zoneAccueil_str; /* zone de communication avec lexit Accueil*/ }; typedef struct InfoTrait InfoTrait;
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 struct ZoneExitDerivation_str { char outil[9]; /* nom de l'outil */ char typeEnrichissement; /* type d'enrichissement */ char typeAppel; /* type d'appel : init (I), trait (T), fin (F)*/ char champ[16][100]; /* valeur d'un champ repéré dans entete */ char codeEtat; /* code état : valeurs 0,4,6,8 */ int codeRetour; /* code retour (int) */ char desti[22]; /* id destinataire fonctionnel */ char filiere[9]; /* filière associée au document */ char typeFamCom[17]; /* type de mla famille de communication */ char critereBanalise[9]; /* critère de segmentation */ char zcrit[61]; /* zone banalisée applicative */ ZoneEditable_str zoneEdit_str[8]; /* zones éditables */ Enrichissement_str enrich1_str[5];/* zones enrichissment */ char zoneTravail[401]; /* zone de travail */ }; typedef struct ZoneExitDerivation_str ZoneExitDerivation_str ; struct ZoneExitDerivation { char outil[8]; /* nom de l'outil */ char typeEnrichissement; /* type d'enrichissement */ char typeAppel; /* type d'appel : init (I), trait (T), fin (F)*/ char champ[16][99]; /* valeur d'un champ repéré dans entete */ char codeEtat; /* code état : valeurs 0,4,6,8 */ char codeRetour[2]; /* code retour (champ binaire) */ char desti[21]; /* id destinataire fonctionnel */ char filiere[8]; /* filière associée au document */ char typeFamCom[16]; /* type de mla famille de communication */ char critereBanalise[8]; /* critère de segmentation */ char zcrit[60]; /* zone banalisée applicative */ char zoneEditable[101]; /* zone éditable selon table médias */ ZoneEditable zoneEdit[8]; /* zones éditables */ Enrichissement enrich1[5];/* zones enrichissment */ char zoneTravail[400]; /* zone de travail */ }; typedef struct ZoneExitDerivation ZoneExitDerivation ; /* zone éditable (utilisé pour l'exit dérivation) */ struct ZoneEditable { char longueur[2]; /* longueur utile de la zone */ char valeur[99]; /* valeur de la rubrique éditable */ }; typedef struct ZoneEditable ZoneEditable ; /* zone éditable str (utilisé pour l'exit dérivation) */ struct ZoneEditable_str { int longueur [2]; /* longueur utile de la zone */ char valeur[100]; /* valeur de la rubrique éditable */ }; typedef struct ZoneEditable_str ZoneEditable_str ; /* zone enrichissement (utilisé pour l'exit dérivation) */ struct Enrichissement { char longueur[2]; /* longueur utile de la zone champ binaire */ char enreg[255]; /* enregistrement */ }; typedef struct Enrichissement Enrichissement ; /* zone Enrichissement_str (utilisé pour l'exit dérivation) */ struct Enrichissement_str { int longueur[2]; /* longueur utile de la zone champ binaire */ char enreg[256]; /* enregistrement */ }; typedef struct Enrichissement_str Enrichissement_str ;
Pour finir, le code :
Mon erreure se situe donc sur les deux atoi et reste inexplicable pour moi
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 int A434_Transfo_Retour_Exit_Derivation(ZoneExitDerivation_str *pS, ZoneExitDerivation*pE) { /*--------------------------------------------------------------------*/ /* Variables locales */ /*--------------------------------------------------------------------*/ int rc = 0; int i = 0; char numeric[3]; /*--------------------------------------------------------------------*/ /* Debut de traitement */ /*--------------------------------------------------------------------*/ for (i = 0; i<8; i++) { numeric[0] = pE->zoneEdit[i].longueur[0]; numeric[1] = pE->zoneEdit[i].longueur[1]; pS->zoneEdit_str[i].longueur = atoi(numeric); memcpy(pS->zoneEdit_str[i].valeur, pE->zoneEdit[i].valeur, sizeof(pE->zoneEdit[i].valeur)); } for (i = 0; i<8; i++) { numeric[0] = pE->enrich1[i].longueur[0]; numeric[1] = pE->enrich1[i].longueur[1]; pS->enrich1_str[i].longueur = atoi(numeric); memcpy(pS->enrich1_str[i].enreg, pE->enrich1[i].enreg, sizeof(pE->enrich1[i].enreg)); }
D'avance merci de votre aide.
(Ceci dit j'ai peut-être une idée mais elle ne me parrait pas bonne... ajouter une * devant le pS...)
Partager