En C, comment peut-on trouver la longueur d’un tableau de caractères?
J'accepterai volontiers le code de support, mais je ne suis pas opposé à ce que quelqu'un l'écrive s'il le souhaite :)
À condition que le tableau de caractères soit null
terminé,
char chararray[10];
size_t len = strlen(chararray);
Si vous avez un tableau , vous pouvez trouver le nombre d'éléments dans le tableau en divisant la taille du tableau en octets par la taille de chaque élément en octets:
char x[10];
int elements_in_x = sizeof(x) / sizeof(x[0]);
Pour le cas spécifique de char
, puisque sizeof(char) == 1
, sizeof(x)
donnera le même résultat.
Si vous avez seulement un pointeur sur un tableau , il n’ya aucun moyen de trouver le nombre d’éléments dans le tableau pointé. Vous devez suivre cela vous-même. Par exemple, étant donné:
char x[10];
char* pointer_to_x = x;
il n'y a aucun moyen de savoir à partir de pointer_to_x
qu'il pointe vers un tableau de 10 éléments. Vous devez suivre vous-même ces informations.
Il existe de nombreuses façons de le faire: vous pouvez soit stocker le nombre d’éléments dans une variable, soit coder le contenu du tableau de manière à obtenir sa taille en analysant son contenu (c’est effectivement ce que font les chaînes à zéro. : ils placent un caractère '\0'
à la fin de la chaîne pour que vous sachiez quand la chaîne se termine).
Bonjour, bien que les réponses ci-dessus soient correctes, voici ma contribution à votre question.
//returns the size of a character array using a pointer to the first element of the character array
int size(char *ptr)
{
//variable used to access the subsequent array elements.
int offset = 0;
//variable that counts the number of elements in your array
int count = 0;
//While loop that tests whether the end of the array has been reached
while (*(ptr + offset) != '\0')
{
//increment the count variable
++count;
//advance to the next element of the array
++offset;
}
//return the size of the array
return count;
}
Dans la fonction main, vous appelez la taille de la fonction en passant l'adresse du premier élément de votre tableau.
char myArray[] = {'h', 'e', 'l', 'l', 'o'};
printf("The size of my character array is: %d\n", size(&myArray[0]));
Bonne chance
Si vous voulez que la longueur du tableau de caractères utilise sizeof(array)/sizeof(array[0])
, si vous voulez la longueur de la chaîne, utilisez strlen(array)
.
Vous pouvez utiliser strlen
strlen(urarray);
Vous pouvez le coder vous-même pour comprendre comment cela fonctionne
size_t my_strlen(const char *str)
{
size_t i;
for (i = 0; str[i]; i++);
return i;
}
si vous voulez la taille du tableau, vous utilisez sizeof
char urarray[255];
printf("%zu", sizeof(urarray));
Il existe également un formulaire compact pour cela, si vous ne voulez pas vous fier à strlen. En supposant que le tableau de caractères que vous envisagez soit "msg":
unsigned int len=0;
while(*(msg+len) ) len++;
en utilisant sizeof ()
char h[] = "hello";
printf("%d\n",sizeof(h)-1); //Output = 5
en utilisant string.h
#include <string.h>
char h[] = "hello";
printf("%d\n",strlen(h)); //Output = 5
using function (
strlen
implementation )
int strsize(const char* str);
int main(){
char h[] = "hello";
printf("%d\n",strsize(h)); //Output = 5
return 0;
}
int strsize(const char* str){
return (*str) ? strsize(++str) + 1 : 0;
}