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 :

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 l’exit dérivation*/
        ZoneExitAccueil_str zoneAccueil_str; /* zone de communication
                                                   avec l’exit Accueil*/
    };
    typedef struct InfoTrait InfoTrait;
Ensuite mes structures pointées :

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 :

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));
    }
Mon erreure se situe donc sur les deux atoi et reste inexplicable pour moi


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...)