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 :

Une petite question sur un malloc de char et de int.


Sujet :

C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 22
    Points : 13
    Points
    13
    Par défaut Une petite question sur un malloc de char et de int.
    Bonjour,

    j'aimerais avoir une petite précision quant à l'application que j'aimerais faire d'un malloc.

    Je vous explique. J'aimerais en fait réaliser un tableau dynamique genre GARRAY de la glib càd pouvoir ajouter des éléments (entier) au tableau sans en avoir spécifié la taille au préalable.

    Pour des tableaux de char c'est facile car on peut jouer avec strlen pour avoir la taille du tableau precedent, allouer un tableau de taille +1char, copier le precedent dedans par strcpy puis concaténer le nouveau char a la fin puis supprimer l'ancien tableau.

    J'aimerais faire exactement pareil et obtenir un tableau d'entier que je peux parcourir simplement par un for(i = 0 ; i < X ; i++) tab[i].

    Seulement mon ennui c'est que je ne sais ni comment récupérer la taille du tableau précédent et ni comment faire pour copier l'ancien tableau dans le nouveau et ajouter l'élément.

    Est-ce que vous auriez des suggestions ?

    Merci d'avance

  2. #2
    Membre habitué Avatar de larnicebafteur
    Inscrit en
    Mai 2006
    Messages
    133
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 133
    Points : 131
    Points
    131
    Par défaut
    Normalement, tu dois connaitre la taille de ton tableau d'entiers precedents, puisque tu l'as déclaré, non ?

    Ensuite, tu crée un tableau de taille n+1, tu transfert les données du tableau précedent dans le nouveau, et tu détruis l'ancien.
    S'il n'y a pas de solution, c'est qu'il n'y a pas de problème

  3. #3
    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
    Utilise realloc tout simplement, le mieux étant biensur de garder une trace de l'ancienne taille !
    Pour bien utiliser realloc: http://emmanuel-delahaye.developpez....es.htm#realloc
    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 !

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 22
    Points : 13
    Points
    13
    Par défaut
    Merci de vos réponses.

    J'ai compris comment accéder aux éléments.

    Par contre pour connaitre la taille j'aimerais ne pas me trainer avec une variable me donnant la taille courante du tableau. J'aimerais savoir s'il n'existe pas une fonction qui donne le nombre d'entier dans mon tableau sans devoir en garder la trace a chaque fois que j'ajoute un nouvel element

  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
    Citation Envoyé par Flitz
    Par contre pour connaitre la taille j'aimerais ne pas me trainer avec une variable me donnant la taille courante du tableau. J'aimerais savoir s'il n'existe pas une fonction qui donne le nombre d'entier dans mon tableau sans devoir en garder la trace a chaque fois que j'ajoute un nouvel element
    Non ca n'existe pas mais faisable soi même !
    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
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 22
    Points : 13
    Points
    13
    Par défaut
    okey, merci bien de vos réponses;

    c'était juste ça qu'il me fallait. Je vais donc bidouiller un truc moi meme ce n'est rien.

    Merci

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Flitz
    Par contre pour connaitre la taille j'aimerais ne pas me trainer avec une variable me donnant la taille courante du tableau.

    Simple question d'organisation..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    struct dyn_array_of_T
    {
       T *p;
       size_t n;
    };
    J'aimerais savoir s'il n'existe pas une fonction qui donne le nombre d'entier dans mon tableau sans devoir en garder la trace a chaque fois que j'ajoute un nouvel element
    Non. mais tu peux le faire à la manière des chaines C (sentinelle '\0'), à condition de sacrifier une valeur.
    Pas de Wi-Fi à la maison : CPL

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

Discussions similaires

  1. Une petite question sur le fichier htaccess
    Par namstou3 dans le forum Langage
    Réponses: 2
    Dernier message: 04/12/2007, 11h01
  2. une petite question sur les combobox
    Par kerkennah dans le forum Windows Forms
    Réponses: 3
    Dernier message: 11/01/2007, 05h59
  3. une petite question sur les pointeurs
    Par guy777 dans le forum C
    Réponses: 4
    Dernier message: 06/10/2006, 17h44
  4. Encore une petite question sur les sockets...
    Par damien99 dans le forum MFC
    Réponses: 4
    Dernier message: 15/02/2006, 14h22
  5. Réponses: 24
    Dernier message: 29/08/2005, 13h33

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