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 :

Allocation tableau dynamique


Sujet :

C

  1. #1
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2013
    Messages : 25
    Points : 25
    Points
    25
    Par défaut Allocation tableau dynamique
    Bonjour,

    N'ayant pas trouvé de réponse dans le FAQ, je souhaiterais savoir si il est possible en C d'utiliser un tableau dynamique dans mon cas.

    En fait j'utilise une API qui va me retourner une réponse à ma requête. Toutes les réponses vont être obtenues dans un seul "objet". Je vais ensuite via une autre fonction, récuperer 1 par 1 mes résultats et les afficher.
    Selon le résultat, je souhaiterai le conserver ou non dans un tableau. SAUF que je ne connais pas à l'avance le nombre d'élements que je vais devoir stocker dans mon tableau..

    Je ne sais pas si j'ai été assez explicite, ni si celà est possible en C.

    Merci d'avance,

    Romain

  2. #2
    Membre éclairé
    Inscrit en
    Décembre 2010
    Messages
    290
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 290
    Points : 719
    Points
    719
    Par défaut
    Tu n'as pas donné beaucoup de détails, mais la réponse courte c'est probablement "oui, tu peux utiliser un tableau dynamique en C".
    malloc()/calloc()/realloc()/free() sont les fonctions C qui permettent d'allouer, redimensionner et libérer un tableau.

    Maintenant, réfléchissons un peu. A ce que je comprends, ton "tableau de résultat" ne fait que grandir, il ne réduit jamais. Alors peut-être que tu pourrais utiliser une liste chainée simple. C'est une construction très connue en C qui te permet de stocker une liste d'objets et qui te permet même d'ajouter un élément à la fin en un nombre constant d'opérations. C'est peut-être important pour toi.

    Enfin, tu ne dis pas ce que tu dois faire de ce tableau ensuite. J'imagine que tu ne le stockes pas pour l'éternité, ni sans but. Suivant les conditions, tu pourrais vouloir simplement écrire les résultats à la suite l'un de l'autre dans un fichier. Au fond pour certains usages un fichier c'est une sorte de tableau.

  3. #3
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2013
    Messages : 25
    Points : 25
    Points
    25
    Par défaut
    Bonjour et merci pour ta réponse,

    En effet je ne suis pas très clair, je vais tenter de préciser :

    En effet mon tableau ne réduit jamais. Mais je ne sais jamais quand il finira de grandir.

    Je ne connais pas les listes chainées, je vais me renseigner sur ce sujet.

    Pour résumer simplement :

    J'execute une fonction qui me renvoie le nombre d'elements total dans ma base de données.
    Ensuite avec une boucle for je parcours tous ces élements et pour chaque element je regarde si il remplit la condition qui m'interesse. Si cet element remplit la condition, alors je souhaite le stocker dans un tableau.

    Au final je souhaiterais me retrouver avec mon tableau d'elements qui m'interesse. Et l'utiliser dans une autre fonction pour par exemple afficher tout ce tableau.

    En esperant avoir été plus clair,

  4. #4
    Membre éclairé
    Inscrit en
    Décembre 2010
    Messages
    290
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 290
    Points : 719
    Points
    719
    Par défaut
    J'en déduis que le filtre que tu dois faire pour décider de ce que tu vas stocker ou non dans ton tableau ne peut pas être fait par la base de données? Ce serait l'idéal mais je suppose qu'il lui manque des infos.

    Je suppose que tu sais que tout a une limite ? Ton tableau peut grossir, jusqu'à un certain point (la limite de mémoire disponible par exemple). A un certain moment, ta fonction d'allocation mémoire échouera.
    Même si tu stockais tout dans un fichier, il arrivera un moment où ton fichier sera trop gros. Ton disque pourrait être plein. Voir même certains systèmes de fichiers limitent la taille maximale d'un fichier.

  5. #5
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut


    Dans l'idéal, si tu as plusieurs informations à stocker pour un même indice, j'utiliserais plutôt une liste chaînée car il te faut de toute manière une structure pour rassembler les info d'un élément donc les listes s'imposent comme un choix évident et c'est moins barbare que de changer la taille d'un tableau à coup de realloc toutes les micro-secondes

    Si tu ne connais pas les listes, bin c'est le moment idéal pour apprendre cette structure de données qui est presque incontournable.. quelques liens:



    Bonne lecture
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  6. #6
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2013
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2013
    Messages : 25
    Points : 25
    Points
    25
    Par défaut
    Bonjour et merci à vous deux pour vos réponses,

    Citation Envoyé par phi1981 Voir le message
    J'en déduis que le filtre que tu dois faire pour décider de ce que tu vas stocker ou non dans ton tableau ne peut pas être fait par la base de données?
    C'est exact !

    Citation Envoyé par phi1981 Voir le message
    Je suppose que tu sais que tout a une limite ?
    Oui mais je resterai toujours dans une fourchette de resultats raisonnable.

    Citation Envoyé par Franck.H Voir le message
    Si tu ne connais pas les listes, bin c'est le moment idéal pour apprendre cette structure de données
    Après lecture de tes liens, celà semblerait une excellent solution, plus qu'à mettre en pratique !

    Merci

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

Discussions similaires

  1. Allocation d'un tableau dynamique 2D
    Par Arwel dans le forum Débuter
    Réponses: 5
    Dernier message: 08/03/2009, 21h47
  2. allocation tableau dynamique
    Par mdabire dans le forum C
    Réponses: 13
    Dernier message: 07/10/2008, 13h19
  3. problème allocation tableau dynamique
    Par ofinot dans le forum C++
    Réponses: 5
    Dernier message: 12/02/2008, 15h03
  4. Réponses: 10
    Dernier message: 24/05/2007, 09h27
  5. Echec d'allocation d'un tableau dynamique
    Par le y@m's dans le forum WinDev
    Réponses: 1
    Dernier message: 09/05/2007, 16h24

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