IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

assignment makes pointer from integer without a cast


Sujet :

C

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    59
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 59
    Par d�faut assignment makes pointer from integer without a cast
    Bonjour � tous!
    J'�cris pour m'amuser un petit jeux, et l� je butte sur un pointeur:

    j'ai une fonction constitu�e essentiellement d'un malloc, dont voici le proto:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    s_scoreNom * hist_initTabHist(FILE *fichier, char userName[], unsigned int nbc)
    Donc ma fonction lit une fichier ainsi qu'un nom d'utilisateur.
    Elle alloue une tableau (de nbc lignes) et renvoie un pointeur vers la premiere case de ce tableau.
    Enfin, chaque ligne du tableau contient une structure (s_scoreNom)

    J'utilise ensuite ma fonction dans mon main:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    s_scoreNom *ptr_sc = NULL;
    ptr_sc = hist_initTabHist(f_historique, nomJoueur, nbLigneHistorique)
    On voit ici que j'essaye de r�cup�rer dans ptr_sc le r�sultat de ma fonction, pour avoir ensuite acc�s � mon tableau.
    J'ai donc une �galit� de pointeur, qui sont de m�me type, mais j'ai toujours un warning du compilo (GCC sur Linux) .

    Pouvez-vous m'aider, car je ne vois pas ce que j'ai fais de mal?

    Par avance merci

  2. #2
    Membre �m�rite
    Avatar de Elijha
    Homme Profil pro
    Ing�nieur d�veloppement mat�riel �lectronique
    Inscrit en
    Avril 2003
    Messages
    314
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 56
    Localisation : France, Alpes Maritimes (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement mat�riel �lectronique
    Secteur : B�timent Travaux Publics

    Informations forums :
    Inscription : Avril 2003
    Messages : 314
    Par d�faut
    Bonjour,

    Sans les d�clarations de nomJoueur et nbLigneHistorique cela ne va pas �tre facile de t'aider. Peut-�tre as tu d�clar�s nomJoueur comme un tableau d'octets non sign�s et qu'au passage du param�tre, ta fonction attend un pointeur de char, ou bien il te faut pr�ciser le type � retourner.
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    s_scoreNom * hist_initTabHist(FILE *fichier, char *userName, unsigned int nbc) ;
    Appel:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
     char nomJoueur[128] = "Joueur1" ;
    unsigned int nbLigneHistorique = 10 ;
    s_scoreNom *ptr_sc = NULL ;
    ...
    ptr_sc = (s_scoreNom *)hist_initTabHist(f_historique, nomJoueur, nbLigneHistorique) ;
    ...
    Es-tu sur que ce probl�me intervienne sur l'appel de ta fonction ?

    En attendant d'avoir plus d'informations, bonne continuation.

  3. #3
    Expert confirm�
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par d�faut
    Peut-�tre, au moment de l'appel, le compilateur ne connait-il pas le prototype de la fonction et pr�sume qu'elle retourne un int (comportement obsol�te dans une telle situation) ?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    59
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 59
    Par d�faut
    Bonjour Elijha, et merci de ta r�ponse rapide:
    voici ma d�claration:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    FILE *f_historique = fopen("jeuxhistorique", "a+"); //fonctionne! (verifié avec gdb)
    unsigned int nbLigneHistorique = lecf_nbLigne(f_historique); //fonctionne! (vérifié aussi!)
    char nomJoueur[] = "truc";
    s_scoreNom *ptr_sc = NULL;
               ptr_sc =  hist_initTabHist(f_historique, nomJoueur, nbLigneHistorique);

    Et je sais aussi que ma fonction hist_initTabHist fonctionne (test� avec gdb).

    Ce qui ne fonctionne pas, c'est le coup de l'�galit� entre ma fonction et ptr_sc: en effet, lorsque je modifie le code et que j'�crie:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    hist_initTabHist(f_historique, nomJoueur, nbLigneHistorique);
    � la place de:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    ptr_sc =  hist_initTabHist(f_historique, nomJoueur, nbLigneHistorique);
    Alors, il n'y a plus de warning!

    En tout cas, merci de ton aide!

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    59
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 59
    Par d�faut
    Peut-�tre, au moment de l'appel, le compilateur ne connait-il pas le prototype de la fonction et pr�sume qu'elle retourne un int (comportement obsol�te dans une telle situation) ?
    Whao! bien vu! �a fonctionne!!!!!

    En effet, je savais que je n'avais pas encore inclue le header contenant le proto, d'ailleurs, j'avais des warning me le disant, mais dans ma t�te de newbi, je ne me suis jamais dis que le compilo pouvait pr�sumer que la fonction retorunait un int!
    Vu que pour les autres fonction, �a marchait, je n'y ai vraiment pas pens�!

    Bref, la prochaine fois, je ne referais pas la m�me erreur!

    En tout cas merci � vous deux!

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 9
    Dernier message: 01/01/2012, 23h02
  2. R�ponses: 5
    Dernier message: 17/02/2011, 20h19
  3. R�ponses: 2
    Dernier message: 12/11/2010, 12h11
  4. R�ponses: 3
    Dernier message: 08/09/2009, 09h40
  5. R�ponses: 6
    Dernier message: 11/05/2006, 22h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo