• # Bizarre

    Posté par (site web personnel) . En réponse au message Probleme d'ecriture dans un STRUCT de int .. Évalué à 2.

    Bizarre... j'ai pensé à un problème de format %d avec des short... mais en ayant copié ton code + de quoi le compiler... ça passe chez moi... (pourtant ça devrais pas, le short est sur deux octets et le int sur quatre).
    Mais quand même, vu la doc, essaie avec d'autres formats...

    Cf doc de scanf:
    À la suite du caractère % introduisant une conversion, il peut y avoir un nombre quelconque de caractères attributs de la liste suivante :
    ...
    h Indique que la conversion sera de type dioux ou n et que le pointeur suivant est un pointeur sur un short int (plutôt que sur un int).
    ...
    Les conversions suivantes sont disponibles :
    ...
    d Correspond à un entier décimal éventuellement signé, le pointeur correspondant doit être du type int *.
    ...


    [laurent@litchi badscan]$ gcc --version
    gcc-4.1.1 (GCC) 4.1.1 20060724 (prerelease) (4.1.1-3mdk)
    Copyright (C) 2006 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions. There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

    #include <stdio.h>
    #define NPI 4

    typedef struct
    {
    short x;
    short y;
    short z;
    } point;

    /* coordonnees pour chaque point */

    point *p ;

    point liste[NPI];

    /* 1ere compile pour tester le mode de saisie */

    int main (int argc, const char** argv)
    {
    int i ;

    for(i=0;i<NPI;i++)
    {
    scanf(" %d %d %d", &liste[i].x, &liste[i].y, &liste[i].z);
    /* copie l'entr� dans la liste */
    }

    for(i=0;i<NPI;i++)
    {
    printf("\n %d %d %d", liste[i].x, liste[i].y, liste[i].z);
    }
    return 0 ;
    }



    [laurent@litchi badscan]$ ./a.out
    1 2 3
    4 5 6
    7 8 9
    10 11 12

    1 2 3
    4 5 6
    7 8 9
    10 11 12

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN