IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Incompatible types in assignment


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Spinoza23
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 328
    Par défaut Incompatible types in assignment
    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...)

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 613
    Par défaut
    Citation Envoyé par Spinoza23 Voir le message
    (Ceci dit j'ai peut-être une idée mais elle ne me parrait pas bonne... ajouter une * devant le pS...)
    La fleche : pS-> déférence déjà le pointeur donc pas besoin d'étoile.
    As tu affiché "numeric" et vérifié le retour de atoi (en l'affichant également) ?

    Tu déclare char numeric[3] mais tu n'affecte que les deux premieres cases de ce tableau de char donc la troiseme est indéfinie, donc on dirait que ta chaine ne se termine pas par '\0'


    Edit : je n'avais pas vu ton erreur de compilation dans le titre.
    Je pense que ca vient du fait que longeur est un tableau de int et tu essaye d'affecter un int à longeur et pas à longeur[0] par exemple

    pS->zoneEdit_str[i].longueur est de type ZoneExitDerivation_str -> ZoneEditable_str[8] -> int [2]

  3. #3
    Membre éclairé Avatar de Spinoza23
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 328
    Par défaut
    J'ai oublié de préciser ceci qui est également dans mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        memset(numeric, '\0', sizeof(numeric));
        memset(pS, '\0', sizeof(pS));

  4. #4
    Membre éclairé Avatar de Spinoza23
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 328
    Par défaut
    Pour ce qui est de la fonction atoi, tout marche bien, les valeurs retournées sont parfaitement valable

  5. #5
    Membre éclairé Avatar de Spinoza23
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 328
    Par défaut
    MERCI !!! La voila l'erreur, longueur n'est pas sencé être un tableau d'int. ça fait des heures que je suis dessus et je n'arrivais pas à le voir. Problème résolut, je te remercie vraiment beaucoup !!!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. error: incompatible types in assignement
    Par Melwen dans le forum Débuter
    Réponses: 3
    Dernier message: 02/05/2010, 20h34
  2. Réponses: 4
    Dernier message: 25/02/2010, 17h14
  3. [Pointeurs] Incompatible type of assignment
    Par Deallyra dans le forum Débuter
    Réponses: 3
    Dernier message: 09/11/2009, 18h01
  4. error: incompatible types in assignment
    Par panda31 dans le forum C
    Réponses: 2
    Dernier message: 13/06/2006, 10h46
  5. Réponses: 4
    Dernier message: 05/12/2005, 19h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo