Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1439 connectés 

  FORUM HardWare.fr
  Programmation
  C

  RESOLU warning: assignment makes integer from pointer without a cast

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

RESOLU warning: assignment makes integer from pointer without a cast

n°1635204
schtek2
Posté le 01-11-2007 à 19:38:57  profilanswer
 

bonjour.
 
J'apprends le C, et j ai un probleme pour initialiser par le biais d'une fonction ma variable de structure.
 
Voila mon code source :
 
main.c
 

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #ifndef DEF_FONCTION_H
  5. #define DEF_FONCTION_H
  6. #include "fonction.h"
  7. #endif
  8. int main(int argc, char *argv[])
  9. {
  10. player player1;
  11. initialiser(&player1);
  12. printf("nom: %ls", player1.nom);
  13. return 0;
  14. }


 
fonction.c
 

Code :
  1. #ifndef DEF_FONCTION_H
  2. #define DEF_FONCTION_H
  3. #include "fonction.h"
  4. #endif
  5. void initialiser(player* point)
  6. {
  7. *point->nom = "abc" ;  // LIGNE 10
  8. *point->prenom = "" ;  // 11
  9. (*point).age = 21;
  10. *point->pays = "" ;   // 13
  11. }
  12. fonction.h
  13. [cpp]
  14. typedef struct player player;
  15. struct player {
  16.   char nom[50];
  17.   char prenom[50];
  18.   long age;
  19.   char pays[70];
  20. };
  21. void initialiser(player* point);


 
En fait ca m'initialise l'age mais pas le nom prenom pays... les types char quoi.
 
quand j affiche l age ca marche (par exemple je met 17)
nom prenom... ca n'affiche rien.
 
En faisant rebuild j'ai ces messages d'erreur :
 
warning: assignment makes integer from pointer without a cast
 
ligne 10, 11 et 13 dans fonction.c
 
Je bloque là dessus et je ne trouve pas d'ou viens l'erreur..
 
Merci d'avance pour vos explications
 
Cordialement


Message édité par schtek2 le 01-11-2007 à 21:23:42
mood
Publicité
Posté le 01-11-2007 à 19:38:57  profilanswer
 

n°1635205
did-54
Posté le 01-11-2007 à 19:48:25  profilanswer
 

mauvaise utilisation de l'opérateur ->
 
(*point).age est équivalent à point->age

n°1635208
schtek2
Posté le 01-11-2007 à 19:54:56  profilanswer
 

did-54 a écrit :

mauvaise utilisation de l'opérateur ->
 
(*point).age est équivalent à point->age


 
J'ai corrigé ça merci.
 
Cependant toujours les meme problemes avec mes char...
 
Quand je les affiche ca m affiche 3 caracteres ou symboles bizarre dans la console

n°1635211
mcyrb
Mieux vaut tard que plus tard
Posté le 01-11-2007 à 20:04:38  profilanswer
 

Code :
  1. strcpy (point->nom, "abc" );
  2. [...]


Message cité 1 fois
Message édité par mcyrb le 01-11-2007 à 20:29:35
n°1635212
schtek2
Posté le 01-11-2007 à 20:11:44  profilanswer
 

mcyrb a écrit :

Code :
  1. strcpy (point->nom, "abc" );
  2. [...]




 
Ca marche merci beaucoup !
 
Cependant, sans vouloir vous embeter, je ne comprends pas pourquoi ca ne marchai pas.
 
Où était mon erreur ? On doit pouvoir faire ça sans la fonction strcpy non ???

n°1635215
mcyrb
Mieux vaut tard que plus tard
Posté le 01-11-2007 à 20:26:38  profilanswer
 

Tu peux recoder strcpy en recopiant les caractères un par un si le coeur t'en dis, mais j'en vois pas trop l'intérêt.

 

Les grands experts du C ici présents me reprendront sûrement, mais lorsque tu fais une affectation entre pointeurs, ce n'est qu'une adresse que tu copies... je ne sais pas trop quelle est l'adresse de cette constante "abc", mais elle ne doit plus correspondre à quelque chose de viable en sortant de ta fonction (si tant est qu'elle l'ait été un jour...).

Message cité 1 fois
Message édité par mcyrb le 01-11-2007 à 20:30:35
n°1635232
tpierron
Posté le 01-11-2007 à 21:20:14  profilanswer
 

Code :
  1. printf("nom: %ls", player1.nom);


 Oula, c'est %s le format pour imprimer du char *, %ls c'est du wchar_t *, erreur qui aurait du t'être affichée avec les flag kivonbien de ton compilateur.

n°1635233
schtek2
Posté le 01-11-2007 à 21:21:44  profilanswer
 

mcyrb a écrit :

Tu peux recoder strcpy en recopiant les caractères un par un si le coeur t'en dis, mais j'en vois pas trop l'intérêt.
 
Les grands experts du C ici présents me reprendront sûrement, mais lorsque tu fais une affectation entre pointeurs, ce n'est qu'une adresse que tu copies... je ne sais pas trop quelle est l'adresse de cette constante "abc", mais elle ne doit plus correspondre à quelque chose de viable en sortant de ta fonction (si tant est qu'elle l'ait été un jour...).


 
A d'accord, je pensai pas qu'il fallai refaire une fonction similaire pour ca... Je sors du php donc.. lol
 
En tout cas merci je sais que je dois utiliser cette fonction désormais.
 
 :hello:

n°1636058
Emmanuel D​elahaye
C is a sharp tool
Posté le 03-11-2007 à 14:25:32  profilanswer
 

schtek2 a écrit :


 
A d'accord, je pensai pas qu'il fallai refaire une fonction similaire pour ca... Je sors du php donc.. lol
 
En tout cas merci je sais que je dois utiliser cette fonction désormais.


Euh, le C, ça ne s'invente pas, ça ne se devine  pas, ça s'apprend. Il y a des références de tutoriels et de cours sur ce site et sur le mien.


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  RESOLU warning: assignment makes integer from pointer without a cast

 

Sujets relatifs
[Résolu]JNI ou comment generer des erreursZoom sur carte vectorielle[RESOLU]
[SQL] message d'erreur qui n'a pa lieu d'être[RESOLU][RESOLU] Supprimer/fermer une fenetre ( de la mémoire )
[RESOLU] probleme counter[Résolu] Lecture dans un fichier avec GetPrivateProfileString
[ RESOLU ] [ PHP ] Modification de chainesCarte Interactive [RESOLU]
[Résolu]Requêtes sur Msysobjects[Résolu] Symfony - Premier projet et configuration d'un virtualhost
Plus de sujets relatifs à : RESOLU warning: assignment makes integer from pointer without a cast


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR