Longueur d'un tableau en C [Résolu/Fermé]

Signaler
Messages postés
9
Date d'inscription
samedi 3 janvier 2004
Statut
Membre
Dernière intervention
18 mars 2006
-
fiddy
Messages postés
11137
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
-
Bonjour, j'aimerais savoir s'il existe une fonction en C qui donne la longueur d'un tableau (mais pas d'un tableau de caractères), il s'agit d'un tableau de structures. Je ne pense pas que la fonction strlen soit adaptée.
Merci de votre réponse.

4 réponses

Messages postés
1284
Date d'inscription
jeudi 7 décembre 2000
Statut
Contributeur
Dernière intervention
26 février 2009
164
non, par contre ceci marche :
sizeof (tableau) / sizeof (tableau[0]);

tafiscobar "lou waye def bopame"
la nullite n'existe pas, l'ignorance oui, ah je suppose!!!
22
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 71300 internautes nous ont dit merci ce mois-ci

bonjour sizeof marche si c'est un char mais si c'est un int par exemple ca marche plus il faut diviser par 4 si c'est unprocesseur de 32 bit
Messages postés
1877
Date d'inscription
jeudi 1 novembre 2001
Statut
Membre
Dernière intervention
9 janvier 2008
110
Non, ce n'est pas possible. La méthode donnée ci-dessus (si elle marche) ne fonctionne pas pour des tableaux dynamiques, ce qui est le plus courant. En règle générale, tu dois gérer le nombre d'éléments d'un tableau quelconque toi-même :) Ce n'est pas du Java.

@++

@++

Vous hésitez entre Linux et Windows ?
Vous voulez dépenser du temps ou de l'argent ?
tafiscobar
Messages postés
1284
Date d'inscription
jeudi 7 décembre 2000
Statut
Contributeur
Dernière intervention
26 février 2009
164
c'est vrai, mais coe il n'a pas precisé, j'ai supposé qu'il a un tableau static et encore, il faut pas le faire ds une fct qui prend en parametre un tableau, cela ne marcherai pas non plus.

tafiscobar "lou waye def bopame"
la nullite n'existe pas, l'ignorance oui, ah je suppose!!!
> tafiscobar
Messages postés
1284
Date d'inscription
jeudi 7 décembre 2000
Statut
Contributeur
Dernière intervention
26 février 2009

Bien sur que si.

int count(void **tab)
{
      int i;

     for (i = 0; tab[i]; i++)
            ;
     return (i);
}


il suffira d'appeller count(tab) pour qvoir le nb d'elements du tableau.... Attention j'ai mis void **tab bien sur a remplacer par le type du tableau en question
Ton code me parait bizarre, si y'a quelque chose d'alloué dans le bloc mémoire suivant celui du tableau (IE tab[i] != 0) ton algo va tourner jusqu'a tomber sur un 0... et ton i peut atteindre des valeurs hors range de ton tableau !! Tu ne peux pas prévoir ce qu'il y aura au delà de ton tableau !
fiddy
Messages postés
11137
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
18 octobre 2016
1620
Attention au déterrage de post.
Mais effectivement le code n'est pas bon puisqu'il compte le nombre de cases non vides. Pour la taille du tableau, pas de choix : sizeof tab / sizeof *tab (ne marche que si tab est un tableau et non un pointeur...)
Messages postés
1284
Date d'inscription
jeudi 7 décembre 2000
Statut
Contributeur
Dernière intervention
26 février 2009
164
lis bien les posts avant de contredire, tu es hors sujet et d'ailleurs ta solution est inefficace en complexite. Moi je parlai du sizeof


tafiscobar "lou waye def bopame"
la nullite n'existe pas, l'ignorance oui, ah je suppose!!!
Je ne vois pas en quoi ma solution est inefficace puisqu'elle marche parfaitement. Et ce n'est pas du tout hors sujet puisque cette fonction banale compte bien le nb d'elements du tableau (c'est bien ce qui est recherché non??)

Et le coup du sizeof je ne suis pas convaincu
--
Jérémy
Messages postés
9
Date d'inscription
samedi 3 janvier 2004
Statut
Membre
Dernière intervention
18 mars 2006
2
je remercie tout le monde de vos réponses. je vais essayer.