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 dynamique d'un tableau


Sujet :

C

  1. #1
    Candidat au Club
    Inscrit en
    Décembre 2009
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 2
    Par défaut Allocation dynamique d'un tableau
    Bonjour!

    Je cherche depuis un certain temps de créer en tableau dynamique en C pour ne pas être limité en nombre d'éléments.

    Actuellement j'ai ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gchar *servers_detected_netstat[120][3];
    Comment faire pour en faire un tableau dynamique et par la suite ajouter des éléments à volonté?
    Si j'ai bien compris il faut utiliser realloc() pour modifier la taille du tableau, mais déjà, comment correctement déclarer le tableau?

    Merci d'avance!

  2. #2
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    typedef gchar * PGCHAR;
    PGCHAR **servers;
    size_t i;
     
    servers = malloc(120 * sizeof(servers[0]));
    for(i = 0; i < 120; i++)
    {
        servers[i] = malloc(3 * sizeof(servers[i][0]));
    }
    - Ajouter la gestion des erreurs.
    - Redimensionner servers ou, pour tout i valide, servers[i] avec realloc.
    - Libérer évidemment la mémoire lorsqu'on n'en a plus besoin.
    - [Tutoriel] L'allocation dynamique de mémoire

  3. #3
    Candidat au Club
    Inscrit en
    Décembre 2009
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 2
    Par défaut
    Citation Envoyé par Melem Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    typedef gchar * PGCHAR;
    PGCHAR **servers;
    size_t i;
     
    servers = malloc(120 * sizeof(servers[0]));
    for(i = 0; i < 120; i++)
    {
        servers[i] = malloc(3 * sizeof(servers[i][0]));
    }
    - Ajouter la gestion des erreurs.
    - Redimensionner servers ou, pour tout i valide, servers[i] avec realloc.
    - Libérer évidemment la mémoire lorsqu'on n'en a plus besoin.
    - [Tutoriel] L'allocation dynamique de mémoire
    Merci, mais je ne sais pas à l'avance combien d'elements doivent être ajoutés.
    Je dois ajouter une ligne à chaque fois avec 3 colonnes.

  4. #4
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Citation Envoyé par nwarrenfl Voir le message
    Merci, mais je ne sais pas à l'avance combien d'elements doivent être ajoutés.
    Je dois ajouter une ligne à chaque fois avec 3 colonnes.
    Et c'est là que tu utilises realloc. Tu peux au départ réserver juste une ligne (avec ses 3 colonnes) voire ne rien réserver mais ça va inutilement compliquer ton code (vu que tu débutes). J'ai juste pris 200 et 3 parce que c'étaient les exemples que tu as pris. Sinon, si une colonne est toujours constitué de 3 PGCHAR, tupeux aussi faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    typedef gchar * PGCHAR;
    typedef PGCHAR COLONNE[3];
    COLONNE * servers; 
    servers = malloc(1 * sizeof(servers[0])); /* Alloue une ligne. */
    /* Ensuite realloc si tu veux. */
    Pour l'utilisation de realloc, voir le cours que je t'ai proposé.

Discussions similaires

  1. [debutant] allocation dynamique d'un tableau.
    Par méphistopheles dans le forum Débuter
    Réponses: 3
    Dernier message: 16/03/2007, 12h45
  2. Réponses: 2
    Dernier message: 05/03/2007, 18h37
  3. Réponses: 67
    Dernier message: 13/02/2007, 18h08
  4. Réponses: 13
    Dernier message: 01/10/2006, 00h25
  5. [PRO*C] Allocation dynamique d'un tableau de VARCHAR
    Par NéalZheimer dans le forum Interfaces de programmation
    Réponses: 5
    Dernier message: 07/07/2006, 13h02

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