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 :

utiliser un unsigned char **


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 41
    Par défaut utiliser un unsigned char **
    Bonjour a vous tous,
    voila j'ai un probleme pour ma fonction suivante, valgrind m'affiche une erreur par rapport a la taille.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
     
    enum {FALSE, TRUE};
     
    int alloc(int size, unsigned char *data)
    {
     if((data = malloc(sizeof(unsigned char)*size))==NULL)
       {
        fprintf(stderr, "malloc error\n");
        return FALSE;
       }
     return TRUE;
    }
     
    int main(void)
    {
     unsigned char *(*data);
     int size = 50;
     alloc(size,*data);
     return FALSE;
    }
    Mon but etant apres avoir compris cette fonction de faire une lecture d'un fichier et d'enregistrer mon fichier dans un unsigend char **
    Car dans mon main je connais pas encore la taille de mon flux...
    Je vais la connaitre dans mon fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    /* Speudo code... */
    int main (int argc, char *argv[])
    {
     unsigned char ** flux;
     LireFichier (*flux, argv[1]);
     return 0;
    }
    Mon idée de depart est elle bonne?
    Ou se trouve mon erreur dans mon premier code?

    Merci d'avance

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    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 395
    Par défaut
    Si tu veux que alloc() puisse modifier le unsigned char *, il lui faut son adresse:
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    #include <stdio.h>
    #include <stdlib.h>
    
    enum {FALSE, TRUE};
    
    int alloc(int size, unsigned char **data)
    {
     if((*data = malloc(sizeof(unsigned char)*size)) == NULL)
       {
        fprintf(stderr, "malloc error\n");
        return FALSE;
       }
     return TRUE;
    }
    
    int main(void)
    {
     unsigned char *data;
     int size = 50;
     alloc(size,&data);
     return EXIT_SUCCESS;
    }
    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.

  3. #3
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par BatuBou Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    int alloc(int size, unsigned char *data)
    {
     if((data = malloc(sizeof(unsigned char)*size))==NULL)
       {
        fprintf(stderr, "malloc error\n");
        return FALSE;
       }
     return TRUE;
    }
    Problème récurrent : http://emmanuel-delahaye.developpez....difie_variable

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

    Informations forums :
    Inscription : Novembre 2007
    Messages : 41
    Par défaut
    Merci beaucoup pour vos reponses !!

    Bonne journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. unsigned char* to char*
    Par xela2000 dans le forum MFC
    Réponses: 4
    Dernier message: 20/11/2005, 16h07
  2. Réponses: 6
    Dernier message: 06/10/2005, 11h30
  3. Décalage de bit sur unsigned char [8]
    Par dboulange dans le forum C++
    Réponses: 14
    Dernier message: 26/07/2005, 14h10
  4. Réponses: 19
    Dernier message: 28/04/2005, 15h36
  5. char et unsigned char
    Par jobherzt dans le forum C++
    Réponses: 8
    Dernier message: 11/02/2005, 00h24

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