Erreur de segmentation en C
trita
-
kilian Messages postés 8854 Statut Modérateur -
kilian Messages postés 8854 Statut Modérateur -
Bonjour,
j'écris un programme avec 2 fichier, rectangle.h et rectangle.c .
Dans mon fichier rectangle.h, j'ai nommée une structure ainsi ;
struct RectangleP;
#define Rectangle struct RectangleP *
Ensuite je l'ai definie de cette maniere dans mon rectangle.c :
struct RectangleP {
int couleur;
};
J'ai ensuite une fonction (un constructeur) :
Rectangle rectangleInit(int i) {
Rectangle rectangle;
rectangle->couleur=i;
return rectangle;
}
A la compilation j'ai une erreur : Erreur de segmentation
Je ne vois pas ou j'ai fais mon erreur ! Si vous pouvez m'aider svp
Cdt
j'écris un programme avec 2 fichier, rectangle.h et rectangle.c .
Dans mon fichier rectangle.h, j'ai nommée une structure ainsi ;
struct RectangleP;
#define Rectangle struct RectangleP *
Ensuite je l'ai definie de cette maniere dans mon rectangle.c :
struct RectangleP {
int couleur;
};
J'ai ensuite une fonction (un constructeur) :
Rectangle rectangleInit(int i) {
Rectangle rectangle;
rectangle->couleur=i;
return rectangle;
}
A la compilation j'ai une erreur : Erreur de segmentation
Je ne vois pas ou j'ai fais mon erreur ! Si vous pouvez m'aider svp
Cdt
A voir également:
- Erreur de segmentation en C
- Erreur t32 ✓ - Forum Livebox
- Erreur 0x80070643 - Accueil - Windows
- Erreur 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- Erreur 4101 france tv - Forum Lecteurs et supports vidéo
- Dans la table des matières du document à télécharger, le chapitre 6 et ses 2 sections n'apparaissent pas. trouvez l'erreur dans la structure du document et corrigez-la. mettez à jour la table des matières. quel est le mot formé par les lettres en majuscules de la table des matières après sa mise à jour ? - Forum Word
5 réponses
Donc tu fais:
Ce qui signifie:
Tu es en train d'assigner une valeur dans un pointeur qui ne pointe nulle part, non initialisé.
Au passage il vaut mieux utiliser typedef que #define pour créer un type.
Rectangle rectangleInit(int i) {
Rectangle rectangle;
rectangle->couleur=i;
return rectangle;
}
Ce qui signifie:
struct RectangleP * rectangleInit(int i) {
struct RectangleP * rectangle;
rectangle->couleur=i;
return rectangle;
}
Tu es en train d'assigner une valeur dans un pointeur qui ne pointe nulle part, non initialisé.
Au passage il vaut mieux utiliser typedef que #define pour créer un type.
d'accord je comprend pourquoi ça ne marche pas, evidement si je pointe nulle part ... mais comment initialiser mon rectangle alors ?
Avec la fonction malloc:
https://openclassrooms.com/fr/courses/19980-apprenez-a-programmer-en-c/16595-lallocation-dynamique
https://openclassrooms.com/fr/courses/19980-apprenez-a-programmer-en-c/16595-lallocation-dynamique
je fais une malloc sur quoi alors ?
sur la couleur ? int couleur = malloc(sizeof(long)) ?
parsque une malloc sur la structure Rectangle complete je vois pas comment faire ...
merci de m'aider ...
sur la couleur ? int couleur = malloc(sizeof(long)) ?
parsque une malloc sur la structure Rectangle complete je vois pas comment faire ...
merci de m'aider ...
ah si c'est bon j'ai trouvé !!!
si je fais Rectangle rectangle = malloc(sizeof(long)) ça marche !
merci bien !!
si je fais Rectangle rectangle = malloc(sizeof(long)) ça marche !
merci bien !!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question