Page 1 of 1

langage C structure

Posted: Thu 16 Sep 2010 20:10
by fater gel
salut j'apprends ( pas mal de truc ) le langage C et les structures ....ben .... comprends pas pourquoi ça beug
alors voilà le code en espérant que vous puissiez m'aidez :

dans main.c:

Code: Select all

#include <stdio.h>
#include <stdlib.h>
#include "main.h"

int main()
{
    coordonnees point = 0;

    printf(" x = %d", x);

    return 0;
}
et dans le main.h

Code: Select all

typedef coordonnees coordonnees
struct coordonnees 
{
    int x;
    int y;
};
merci de répondre

Re: langage C structure

Posted: Thu 16 Sep 2010 20:48
by bulton
Quand tu cherches à compiler ton code, il doit te retourner une erreur qui devrait t'orienter pour trouver d'où ça vient déjà ;)

Pour le reste, je suis pas spécialisé C et j'en fais rarement donc je pourrais pas trop te renseigner malheureusement.

Re: langage C structure

Posted: Thu 16 Sep 2010 20:58
by fater gel
oui il me dit que c'est la première fois que "x" apparait dans le code !

Re: langage C structure

Posted: Fri 17 Sep 2010 11:47
by dremecker
Sans doute parce que :
Les .h : appelés fichiers headers. Ces fichiers contiennent les prototypes des fonctions.

Sources : SDZ (que je te conseil de lire)


Or ton .h ne contient pas de prototype de fonction mais une structure de données que tu n'appelles pas.
Que donne "point.x" au lieux de "x" dans le printf ?


Ps : Ca fais lontemps que je n'ai pas codé en c... je ne me souviens plus de tout les détails :wink:

Re: langage C structure

Posted: Wed 6 Oct 2010 02:25
by wingzero
fater gel wrote:salut j'apprends ( pas mal de truc ) le langage C et les structures ....ben .... comprends pas pourquoi ça beug
alors voilà le code en espérant que vous puissiez m'aidez :

dans main.c:

Code: Select all

#include <stdio.h>
#include <stdlib.h>
#include "main.h"

int main()
{
    coordonnees point = 0;

    printf(" x = %d", x);

    return 0;
}
et dans le main.h

Code: Select all

typedef coordonnees coordonnees
struct coordonnees 
{
    int x;
    int y;
};
merci de répondre
Salut, c'est bien d'apprendre le C! Continu :D

PS.:Mieux vaut de ne pas faire de main.h

voici une des bonnes manières de faire ce code:

Code: Select all

#include <stdio.h>
#include <stdlib.h>

// tu avais oublié le struct, et mieux vaut donner deux noms différents
// et un point virgule.
typedef struct _coordonnees Coordonnees;

struct _coordonnees {
    int x;
    int y;
};

int main()
{
   // réservation de l'espace mémoire de la taille de la structure, très important.
   // coor devient un pointeur vers la structure
    Coordonnees* coor = malloc( sizeof(Coordonnees) );

    coor->x = 3;    // donner une valeur a x
    coor->y = 5;    // donner une valeur a y

    // affichage, on doit aller chercher la valeur de x pointé par coor (coor->x).
    printf( "Les coordonnees du point sont: (%d, %d).\n", coor->x, coor->y );

    // libération de la mémoire (recommandé)
    free( coor );
    return 0;
}
Ce code affiche:

Les coordonnees du point sont: (3, 5).

Bon, il y a plusieurs façons différentes de coder ce genre de problèmes, mais je peux dire que celle-ci en est une très bonne ;)