cs_MiTcH37
Messages postés203Date d'inscriptiondimanche 6 avril 2003StatutMembreDernière intervention13 août 2005
-
9 nov. 2003 à 11:48
cs_jansen
Messages postés10Date d'inscriptionjeudi 15 juillet 2004StatutMembreDernière intervention 4 décembre 2004
-
4 déc. 2004 à 15:50
J'aimerai savoir comment connaitre la taile d'un tableau, pour ne pas les envoyer comme argument dans une fonction.
ex : void fct(int trier[], int taille);
si qqun sait l'equivalence de strlen() pour les tableaux ?
@++
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 9 nov. 2003 à 11:55
strlen NE PEUT PAS avoir d'equivalent pour tableau !!!
Ta func:
void fct(int trier[], int taille);
trier est un pointeur sur 1er octet du tableau.
taille DOIT etre le nombre d'elements du tableau a trier si tu connais le type d'element(int, double....).
BruNews, ciao...
garslouche
Messages postés583Date d'inscriptionmardi 26 novembre 2002StatutMembreDernière intervention29 mai 20151 10 nov. 2003 à 07:54
En fait il y a une autre solution.
C'est d'ailleurs celle utilisée par strlen.
Les chaines de caractères en C se terminent toujours (ou presque) par le caractère nul : '\0'
Par exemple:
La chaine de caractère "salut" est stockée comme
S | A | L | U | T | \0
C'est pour ça qu'il faut donner un caractère de plus dans une déclaration de chaine. C'est à dire que la chaine "salut" est un char[6] (au moins).
Du coup strlen n'a qu'à chercher le caractère \0 pour déterminer la longueur de la chaine.
Sur le même principe si tu utilises une liste dont le dernier élément est NULL tu peux en déterminer le nombre d'élément.
garslouche
Messages postés583Date d'inscriptionmardi 26 novembre 2002StatutMembreDernière intervention29 mai 20151 10 nov. 2003 à 08:01
Euh...je pense à un truc...il faut qd même faire attention. Parceque selon les compilateurs NULL peut être interprété comme le nombre 0 (c'est le cas avec VC++) du coup un tableau d'entiers contenant un 0 aurait une longueur réduite...
Sur le principe ça ne change rien : il suffit de remplacer NULL par une valeur qui ne peut pas t'arriver normalement. Par exemple si tu utilises des entiers positifs uniquement tu peux utiliser -1 comme élément de fin de liste. Cet élément est à chercher selon le cas dans lequel tu te trouves.
cs_MiTcH37
Messages postés203Date d'inscriptiondimanche 6 avril 2003StatutMembreDernière intervention13 août 2005 11 nov. 2003 à 10:38
Merci pour vos réflexions, mais j'y avais déjà penser ! :)
le pb c que je ne peux prendre une valeur et que le \0 ou NULL ne marche pas quand ya un 0 dans le tableau...
@++
cs_jansen
Messages postés10Date d'inscriptionjeudi 15 juillet 2004StatutMembreDernière intervention 4 décembre 2004 4 déc. 2004 à 15:50
Salut,
ce que tu peux faire c'est quelque chose comme cela (marche pour du 1 dimension, deux, je ne sais pas trop)
int nt;
nt=(sizeof(tab)/sizeof(tab[0]));
POUR LES ENTIERS: Comme ca tu récupères la taille de ton tableau en octet et tu la divise par la taille d'une case et tu obtiens la longueur de ton tableau.
(de tête, je ne dois pas me tromper)
Dur dur d'être un débutant... il faut lutter c looonnnngg...