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 :

Nombre d'elements tableau dynamique


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 421
    Par défaut Nombre d'elements tableau dynamique
    Bonjour à tous,

    Après avoir conçu un tableau dynamique dans une structure, je souhaiterai déterminer le nombre d'éléments de ce tableau.Quelqu’un connaîtrait t'il un moyen de faire ceci en langage C svp ?

  2. #2
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Si le tableau a été obtenu par allocation dynamique (malloc()), il n'y a pas de moyens de retrouver son nombre d'éléments à partir du pointeur obtenu.
    Donc, si on pense en avoir besoin ultérieurement à la création, il faut le stocker quelque part.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 421
    Par défaut
    Ah ok d'accord,

    en fait, j'ai crée une fonction qui prend en argument un tableau dont je ne connais pas le nombre d'éléments. Dans le but de le parcourir je voudrais connaître sa dimension.
    Il n'existerait pas un autre moyen ?

  4. #4
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2012
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 190
    Par défaut
    salut !
    comme dit diogène tu stockes.
    si tu ne veux pas stoker tu places un chien de garde (comme \0 en fin de chaîne ou NULL en fin de tableau de pointeurs) mais le traitement est plus long en général
    si tu ne veut pas une de ces deux méthodes classiques, tu vas devoir te donner du mal ...

    A+

  5. #5
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Par défaut
    Bonsoir,

    A titre d'information sous Visual Studio il y a une fonction qui permet de retrouver la taille
    d'un tableau _msize(void *)

    Mais ne pense pas que ce soit une bonne idée de l'utiliser ici :
    - _msize() ce n'est pas une méthode standard. (code pas portable)
    - si tu débutes, autant apprendre les bonnes pratiques de codage, plutôt que de chercher des bidouilles.
    - et je ne suis pas sûr que tu dispose de ce compilateur.

    De ce que j'en comprend, la méthode standard serait ici:

    - d'enregistrer la taille du tableau au moment de l'allocation de mémoire.
    J'ai conçu un tableau dynamique dans une structure
    Pourquoi ne pas ajouter un entier dans cette structure pour stocker la taille du tableau

    - de passer la taille du tableau à la fonction void f(int * <pointeur>, int <taille>)

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    Billets dans le blog
    4
    Par défaut
    Le mieux je trouve c'est de ne pas utiliser des tableaux comme ça, mais une simple structure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    struct ArrayInt {
    int* tab;
    unsigned int size;
    };
    Et tu ballades ton ArrayInt où nécessaire.
    Ca limite les erreurs d'oubli de passage de dimension et de mauvaise dimension passée en paramètres qui surviennent en débutant.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  7. #7
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 485
    Par défaut
    Citation Envoyé par anacharsis Voir le message
    si tu ne veux pas stoker tu places un chien de garde (comme \0 en fin de chaîne ou NULL en fin de tableau de pointeurs) mais le traitement est plus long en général
    Le terme exact dans ce cas est « sentinelle ». Un watchdog correspond à une chose sensiblement différente. En général, il s'agit d'un dispositif extérieur à un système donné et dont le rôle est de surveiller sa bonne santé et de le relancer s'il ne répond plus dans un délai imparti.

  8. #8
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2012
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 190
    Par défaut @Obsidian
    c'était du français ordinaire pour parler ce celui qui surveille votre bien à condition que vous vous occupiez de lui. c'est un peu plus précis que sentinelle, mouchard, indicateur, marqueur ...
    quand je veux dire WatchDogTimer, je le dis en anglais parce que "chien de garde chronométrique" me dérange ;-)

    A+

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 421
    Par défaut
    re bonjour,

    je vous remercie de m'avoir répondu. J'ai décidé d'opter pour la solution suivante, de demander à l'utilisateur le nombre d'éléments du tableau, puis de le stocker dans la structure.
    J'aurais une autre question à vous poser mais je pense que je vais ouvrir un autre topic pour le faire.

    Cordialement, takout.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 28/10/2008, 20h19
  2. Réponses: 9
    Dernier message: 23/12/2007, 19h51
  3. Réponses: 4
    Dernier message: 08/02/2007, 18h55
  4. [VB6] Nombre d'element dans un tableau ?
    Par belfaigore dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 20/09/2006, 22h23

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