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 :

[MD5] Petit probleme de warning.


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé

    Inscrit en
    Avril 2004
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 78
    Par défaut [MD5] Petit probleme de warning.
    Bonsoir,

    J utilise la bibliotheque md5 pour avoir le hash md5 d une chaine de caractere.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MD5(buff, strlen(buff), tab_md)
     
    avec buff la chaine de caracteres, et tab_md le tableau de unsigned char.

    lors de la compilation, j ai un warning qui me dit :
    warning:pointer targets in passing argument 1 of 'MD5' diifer in signedness

    l argument 1 doit prendre un unsigned long. or j ai beau caster strlen(buf) en insigned long j ai toujours le warning.

    Merci.

  2. #2
    Membre émérite Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Par défaut
    Citation Envoyé par Mr_Chut
    Bonsoir,

    J utilise la bibliotheque md5 pour avoir le hash md5 d une chaine de caractere.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MD5(buff, strlen(buff), tab_md)
     
    avec buff la cqhine de caracteres, et tab_md le tableau de unsigned char.

    lors de la compilatop, j ai un warning qui me dit :
    warning:pointer targets in passing argument 1 of 'MD5' diifer in signedness

    l argument 1 doit prendre un unsigned long. or j ai beau caster strlen(buf) en insigned long j ai toujours le warning.

    Merci.
    Mais l'argument 1 est "buff". Pourquoi parles-tu de 2 (strlen(buff)) ?
    Comment as-tu déclaré "buff" ?

  3. #3
    Membre confirmé

    Inscrit en
    Avril 2004
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 78
    Par défaut
    Deja desole pour les fautes, la fatigue n aidant pas a les voir.

    Pour l argument, je me suis gourré (la fatigue ..... ). Je sais pas pourquoi mais je comptais a partir de 0.
    Bref le buff je le declare comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    unsigned char *buff = "toto";
    C est vrai que toto est une chaine de char signe, mais je me disais que le vu que les character ascii ont des valeurs positives, il n y a pas de problemes....
    Enfin je pense.


    MAJ :
    C est vrai que en C, il faut faire un cast explicite.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    unsigned char *buff = (unsigned char *)"toto";
    et la c est bon.
    Si quelqu un pense que ca peut poser probleme, n hesiter a me le dire .

    Sinon je voulais savoir autre chose, je veux convertir le MD5 en chaine de caractere.
    Ce que je fais c :
    1- je cree tab_char un tableau de char de longueur strlen(md)*2.
    2- pour i allant de 0 a strlen(md) faire sprintf(buff+2*i, "%02x", md[ i])

    Ceci marche bien. Mais je voulais avoir une information au sujet de \0.
    Est ce que je devrais pas rajouter une case a mon tableau tab_char? En effet si j arrive a la fin de mon tablleau lors de la boucle for, je n aurais plus de place pour ajouter \0.

    Merci

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par défaut
    ben si tu déclares en char *, tu n'auras plus de warning.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre confirmé

    Inscrit en
    Avril 2004
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 78
    Par défaut
    non justement buff doit etre un unsigned char* car il est utiliser avec la fonction md5.

    unsigned char *MD5(const unsigned char *d, unsigned long n, unsigned char *md);

    si je declare buff en char *, j ai toujours le warning (enfin je l avais car maintenant je l ai plus ).

Discussions similaires

  1. Petit problème de fork
    Par osmose22 dans le forum Linux
    Réponses: 7
    Dernier message: 18/03/2007, 21h10
  2. [TP]petit probleme avec solution
    Par pompompolom dans le forum Turbo Pascal
    Réponses: 1
    Dernier message: 02/12/2004, 19h48
  3. petit probleme avec l'éditeur de builder
    Par qZheneton dans le forum C++Builder
    Réponses: 2
    Dernier message: 28/10/2004, 16h19
  4. petit probleme de requete
    Par nico33307 dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 25/08/2004, 11h36
  5. petit probleme dans une requte POSTGRE SQL
    Par ghis le fou dans le forum Requêtes
    Réponses: 5
    Dernier message: 08/09/2003, 13h51

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