Comment trouver la longueur d'un tableau de char en c
Je veux trouver la longueur de cette :
char *s[]={"s","a","b"};
il faut compter 4 à l' /0, mais la strlen ou sizeof(s)/sizeof(char) me donne de mauvaises réponses..
Comment puis-je le trouver?
Vous devez vous connecter pour publier un commentaire.
Vous faire un tableau de
char*
et pas dechar
. C'est pourquoistrlen
ne fonctionne pas. UtilisationSi vous ne voulez qu'une seule chaîne de caractères utilisez
sizeof(s) /sizeof(s[0])
fonctionne quel que soit le type des
contient.sizeof s / sizeof *s
à la place (ou, à l'aide redondant parenthèse,sizeof (s) / sizeof (*s)
).Ce que vous avez définie est pas une chaîne où il n'y a pas de caractère de fin NUL. Ici, vous avez déclaré que des pointeurs vers des 3 chaînes de caractères séparées. BTW, vous devez déclarer votre tableau comme
const char*
.strlen fonctionne si vous résiliez votre tableau avec un caractère null. Vous ne pouvez pas trouver le nombre d'éléments dans un tableau de char, à moins que vous en garder la trace. j'.e de le stocker dans une variable comme n. Chaque fois que vous ajoutez un membre de l'incrément n et chaque fois que vous supprimez décrémenter n
Il n'y a pas de moyen direct pour déterminer la longueur d'un tableau en C. les Tableaux en C sont représentés par un bloc continu dans une mémoire.
Vous devez garder de la longueur de la matrice comme une valeur distincte.
Pourquoi devrait-il compter 4? vous avez 3 pointeurs de char dans ce tableau, il faut compter 12 sur la plupart des plates-formes 32 bits.