[c] associer une chaîne à une structure ?
Fermé
oopin
Messages postés
25
Date d'inscription
vendredi 26 octobre 2007
Statut
Membre
Dernière intervention
7 juin 2011
-
1 avril 2009 à 01:54
loupius - 1 avril 2009 à 20:09
loupius - 1 avril 2009 à 20:09
A voir également:
- [c] associer une chaîne à une structure ?
- Chaine tnt gratuite sur mobile - Guide
- Associer chromecast - Guide
- Nouvelle chaîne tnt gratuite 2024 - Accueil - TV & Vidéo
- Plus de chaine tv - Guide
- Chaine radio - Télécharger - Médias et Actualité
4 réponses
oopin
Messages postés
25
Date d'inscription
vendredi 26 octobre 2007
Statut
Membre
Dernière intervention
7 juin 2011
1
1 avril 2009 à 02:04
1 avril 2009 à 02:04
En fait j'ai fait :
et ça a l'air de passer pas trop mal, j'ai fait ca en ctrl Z et pourtant ca ne marchait pas il y a 10 minutes :(
Par contre à la compilation j'ai un warning sur cette ligne :
dmr.c:136: attention : assignment makes integer from pointer without a cast
quand j'arrive à l'enlever, mon code me fait une erreure de segmentation
Des idées ?
Merci d'avance
*(( char * )(player->nom)) = nom_joueur ;
et ça a l'air de passer pas trop mal, j'ai fait ca en ctrl Z et pourtant ca ne marchait pas il y a 10 minutes :(
Par contre à la compilation j'ai un warning sur cette ligne :
dmr.c:136: attention : assignment makes integer from pointer without a cast
quand j'arrive à l'enlever, mon code me fait une erreure de segmentation
Des idées ?
Merci d'avance
L'éternel même problème: quand il y a un problème de segmentation, dans 99,99% des cas c'est un problème de mauvaise ou de non initialisation de pointeur.
Et, ici, c'est encore le cas !!!
Tu nous écris:
JOUEUR * player;
*(( char * )(player->nom)) = nom_joueur ;
Tu utilises un pointeur non initialisé!
Il faut au moins faire: player = (JOUEUR*)malloc(sizeof(JOUEUR));
Tout ne sera peut-être pas résolu, mais tu sera sur la bonne voie.
Et, ici, c'est encore le cas !!!
Tu nous écris:
JOUEUR * player;
*(( char * )(player->nom)) = nom_joueur ;
Tu utilises un pointeur non initialisé!
Il faut au moins faire: player = (JOUEUR*)malloc(sizeof(JOUEUR));
Tout ne sera peut-être pas résolu, mais tu sera sur la bonne voie.
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
1 avril 2009 à 11:13
1 avril 2009 à 11:13
Salut.
En effet allouer de la place pour joueur est la première chose à faire.
D'ailleurs, mauvaise idée le nom tout en majuscule, en général on réserve les noms en capitale pour les macros)
Sinon, révise tes cours de tableaux, tu ne peux pas modifier l'adresse d'un tableau, car ce n'est pas un pointeur.
Si tu veux faire une assignation, il faut utiliser strcpy().
En effet allouer de la place pour joueur est la première chose à faire.
D'ailleurs, mauvaise idée le nom tout en majuscule, en général on réserve les noms en capitale pour les macros)
Sinon, révise tes cours de tableaux, tu ne peux pas modifier l'adresse d'un tableau, car ce n'est pas un pointeur.
Si tu veux faire une assignation, il faut utiliser strcpy().
oopin
Messages postés
25
Date d'inscription
vendredi 26 octobre 2007
Statut
Membre
Dernière intervention
7 juin 2011
1
1 avril 2009 à 16:55
1 avril 2009 à 16:55
Merci pour vos réponse, je vais essayé ça de ce pas.
J'avou ne pas être encore très à l'aise avec les pointeurs, mais ça viens doucement.
J'avais bien essayé le strcpy() mais sans le malloc ca ne passait pas.
Après essai : ça marche, merci à vous deux ;)
En ce qui concerne les noms en majuscule, c'est imposé par notre prof malheureusement :'(
J'avou ne pas être encore très à l'aise avec les pointeurs, mais ça viens doucement.
J'avais bien essayé le strcpy() mais sans le malloc ca ne passait pas.
Après essai : ça marche, merci à vous deux ;)
En ce qui concerne les noms en majuscule, c'est imposé par notre prof malheureusement :'(
Char Snipeur a évidemment raison ;-) Il ne fau(drai)t pas utiliser les noms tout en majuscules pour les noms de classes ou de structures: la règle (non obligatoire (évidemment on peut faire ce que l'on veut) mais quasiment toujours appliquée) est 'les mots collés avec la première lettre en majuscule', par exemple: 'JoueurDebutant', 'JoueurComfirmé', 'JoueurExpert'.
Tu n'est pas obligé de tirer l'oreille de ton prof (d'ailleurs je te le déconseille fortement), mais, sans le frustrer, si tu pouvais lui en glisser un mot... ce serait, en faisant prendre de bonnes habitudes, rendre service à toute une classe.
Bon courage.
Tu n'est pas obligé de tirer l'oreille de ton prof (d'ailleurs je te le déconseille fortement), mais, sans le frustrer, si tu pouvais lui en glisser un mot... ce serait, en faisant prendre de bonnes habitudes, rendre service à toute une classe.
Bon courage.