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 ?
Version imprimable
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 ?
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.
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 ?
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+
Bonsoir,
A titre d'information sous Visual Studio il y a une fonction qui permet de retrouver la taille
d'un tableau _msize(void *)
:calim2: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.
Pourquoi ne pas ajouter un entier dans cette structure pour stocker la taille du tableauCitation:
J'ai conçu un tableau dynamique dans une structure
- de passer la taille du tableau à la fonction void f(int * <pointeur>, int <taille>)
Le mieux je trouve c'est de ne pas utiliser des tableaux comme ça, mais une simple structure
Et tu ballades ton ArrayInt où nécessaire.Code:
1
2
3
4 struct ArrayInt { int* tab; unsigned int size; };
Ca limite les erreurs d'oubli de passage de dimension et de mauvaise dimension passée en paramètres qui surviennent en débutant.
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.
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+
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.