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 :

probleme d' allocation


Sujet :

C

Vue hybride

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 11
    Par défaut probleme d' allocation
    Bonjour, je cherche a stoquer un fichier dans un tableau pour pouvoir l'utiliser comme un entier (FF FF 00 dans le fichier correspond au nombre 255255000
    ), seulement des que le nombre est un peu grand ca deborde et ca me donne du -....

    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
     
    int main()
    {
    	int c,*file_n,taille;
    	FILE *fin = fopen("exe1","rb");
            taille=taillef("exe1");                    //taille du fichier
            file_n=(int*)malloc(taille*3);         //la var sera 3 fois plus grande
    while(1)
        {
            c=fgetc(fin);
            if(c==EOF) break ;
            file_n=c+((int)file_n)*1000;
            printf("%d\n",file_n);
            system("pause");
        }
    une idée?

  2. #2
    Membre expérimenté
    Inscrit en
    Septembre 2006
    Messages
    414
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 414
    Par défaut
    on peut avoir le code de taillef() ?
    et pourquoi tu l'ouvre pas en mode texte ton fichier ?et je comprend pas du tout ce que tu cherche a faire ici:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    file_n=c+((int)file_n)*1000;
    file_n est un pointeur sur int ! c est un int !
    pourquoi tu cast file_n ?? tu cherche a faire quoi ????


    dois je te rappeler que file_n contient une adresse ! c'est ce que signifie pointeur !

  3. #3
    Membre expérimenté
    Inscrit en
    Septembre 2006
    Messages
    414
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 414
    Par défaut
    generalement un entier a une taille de 4 octet.
    si tu est sur que ton entier lu est toujours positif, utilise: unsigned int
    tu pourra avoir des nombre entier positifs plus grands.

    pourrait tu expliquer plus precisement ce que tu chereche à faire ?
    cette ligne de code (horrible ^^) m'embrouille:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    file_n=c+((int)file_n)*1000
    tu cherche peut etre a stocker ton texte dans un tableau d'entiers ?c'est ca que tu voulais dire (tout les 4 octet a ce moment la...) ?

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 11
    Par défaut
    cette ligne prend le char lu dans le fichier et le multipli par 1000 pur faire ca
    si le fichier contient 255 255 000 en ascii
    ca fait:
    1) file_n=255+(file_n*1000)
    donc file_n=255+ 0*1000
    2)file_n = 255 +255 *1000
    donc file_n=255 255
    3)file_n = 000 +255 255 *1000
    donc file_n=255 255 000

    j'aurais donc file_n qui sera a la fin egal a une suite de valeur de caractere ascii, donc en gros convertir mon fichier en nombre (pour travailler sur ce nombre plus tard)

    taillef est une fonction qui renvoi la taille du fichier en octet

  5. #5
    Membre expérimenté
    Inscrit en
    Septembre 2006
    Messages
    414
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 414
    Par défaut
    mais alors pourquoi tu declare file_n comme un ponteur ? pourquoi tu alloue dinamiquement file_n ? si au final ca ne te sert a rien !
    tu alloue un espace memoire que tu n'utilise jamais !


    ton probleme avec les nombre negatifs qui apparaissent se reglera si tu defini file_n comme ca:

    unsigned int file_n;
    c'est du au fait que un int est codé en complement à 2 ! si le dernier bit est un 1 alors le nombre sera negatif ! et F=(1111)b
    en utilisant unsigned il sera lu en binaire pur.

    pas besoin d'allouer dynamiquement !

    mais il ne faut pas depasser cette valeure: (2^32)-1

  6. #6
    Membre éprouvé
    Avatar de granquet
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    1 201
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 201
    Par défaut
    code à revoir de A à Z ...

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 11
    Par défaut
    Citation Envoyé par kamouminator
    mais alors pourquoi tu declare file_n comme un ponteur ? pourquoi tu alloue dinamiquement file_n ? si au final ca ne te sert a rien !
    tu alloue un espace memoire que tu n'utilise jamais !
    si justement je vais allouer un espace de la taille*3 de mon fichier c'est a dire que ca peux prendre beaucoup de place (~1mo pour le fichier actuelle)

    donc quelqu'un pourrais me dire comment creer une var contenant un entier de taille*3 octet dynamiquement?

Discussions similaires

  1. probleme d'allocation dynamique de mémoire
    Par Blo0d4x3 dans le forum C
    Réponses: 2
    Dernier message: 13/03/2007, 07h53
  2. Probleme d'allocation dynamique
    Par Xav987 dans le forum C++
    Réponses: 6
    Dernier message: 04/03/2007, 13h43
  3. Probleme d'allocation avec un malloc
    Par theshark85 dans le forum C
    Réponses: 11
    Dernier message: 25/04/2006, 17h30
  4. probleme d allocation avec un tableau de BYTE
    Par e1lauren dans le forum C++
    Réponses: 5
    Dernier message: 06/05/2005, 13h42
  5. probleme d'allocation dynamique
    Par vince3320 dans le forum C
    Réponses: 10
    Dernier message: 22/04/2004, 16h27

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