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 :

Stockage dans l'application


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 15
    Par défaut Stockage dans l'application
    Bonjour,

    J'ai la fonction suivant dans une boucle qui ecrit 8192 octects par boucle dans un fichier.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fwrite(OutputBuffer,1,8192,OutputFp);
    J'aimerais remplacer cette fonction par une fonction qui stockerait toutes les données dans la memoire de l'application au lieu de les écrire dans un fichier. Par contre je ne sais pas combien de memoire il faut allouer pour le stockage...
    OutputBuffer est déclaré en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    unsigned char OutputBuffer[8192];
    Voila, merci de votre aide...

  2. #2
    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 yugimega
    J'ai la fonction suivant dans une boucle qui ecrit 8192 octects par boucle.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fwrite(OutputBuffer,1,8192,OutputFp);
    J'aimerais remplacer cette fonction par une fonction qui stockerait toutes les données dans la memoire de l'application comme un concatenage. Par contre je ne sais pas combien de memoire il faut allouer pour le stockage...
    OutputBuffer est déclaré en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    unsigned char OutputBuffer[8192];
    Euh, tu as relut ta question ? Parce qu'elle n'a aucun sens.

    fwrite(), ça ne lit rien du tout. Comme son nom l'indique, ça écrit dans un flux.

    Tu parlais peut être de fread() ? Dans ce cas, il faut un tableau dynamique et apprendre à utiliser correctement realloc() et se basant sur la valeur retournée par fread().

    C'est assez délicat...

    http://emmanuel-delahaye.developpez....tes.htm#malloc
    http://emmanuel-delahaye.developpez....es.htm#realloc

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 15
    Par défaut
    J'ai modifié ma question, mais je ne veus rien lire juste ecrire les données dans la memoire de l'application au lieu de les ecrires dans le fichier. Mais le seul proleme c'est que je ne connais pas le nombre de boucle il y a car c'est un do{...}while(1); et que c'est varriant...

  4. #4
    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 yugimega
    <...>je ne veus <...> juste ecrire les données dans la memoire de l'application au lieu de les ecrires dans le fichier. Mais le seul proleme c'est que je ne connais pas le nombre de boucle il y a car c'est un do{...}while(1); et que c'est varriant...
    Si tu ne sais pas combien de (blocs de )données il faut écrire et que tu n'a pas de marqueur pour savoir quand t'arréter, il n'y a pas de solution.

    Gros problème de conception.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 15
    Par défaut
    Alors disons que je sais quelle taille il faut allouer, que puis je faire pour ajouter les données au fur et a mesure en usigned char dans une autre variable ??? Le total des données reviens environ a 50 Mo

  6. #6
    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 yugimega
    Alors disons que je sais quelle taille il faut allouer, que puis je faire pour ajouter les données au fur et a mesure en usigned char dans une autre variable ??? Le total des données reviens environ a 50 Mo
    C'est un simple tableau. Tu ne connais pas les tableaux ? Il suffit d'allouer le bloc nécessaire et de gérer correctement un indice d'écriture au fur et à mesure...

    Fait de ton mieux et poste le code si il y a un problème.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2006
    Messages : 15
    Par défaut
    J'ai réussi en mettant a peu pres ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    usigned char OutputBuffer[8192];
    usigned char *block = new unsigned char[52428800]; //= a 50Mo
    int x=0;
     
    do
    {
    [...]
    memcpy(block+x, OutputBuffer, 8192);
    x=x+8192;
    [...]
    }while(1);
    Dans le gestionnaire de tache, je vois a la fin de la boucle que 45 Mo de memoire sont utilisé par mon application. Donc mes données sont bien stocké mais je ne suis pas sur que tout soit bien comme il faut au niveau du stockage... Le programme est-il bien ???

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

Discussions similaires

  1. Intégrer une partie stockage dans une application ?
    Par nickylarson59 dans le forum Android
    Réponses: 6
    Dernier message: 30/05/2014, 10h59
  2. Stockage de données dans une application Swing
    Par taldir dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 24/02/2012, 16h05
  3. Licence MySql en tant que BD dans une application web
    Par Volta dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 26/02/2004, 14h38
  4. fenetre dos dans une application
    Par jfb53 dans le forum C++Builder
    Réponses: 3
    Dernier message: 19/10/2003, 18h06
  5. Réponses: 7
    Dernier message: 26/06/2003, 09h11

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