De lengte van een karakterarray in C

Wat is een manier in c dat iemand de lengte van een karakterarray zou kunnen vinden?

Ik accepteer graag pseudo-code, maar ben niet wars op iemand die het schrijft als ze willen 🙂


Antwoord 1, Autoriteit 100%

Op voorwaarde dat de array van Char nullbeëindigd,

char chararray[10] = { 0 };
size_t len = strlen(chararray);

Antwoord 2, Autoriteit 31%

Als u een array hebt, kunt u het aantal elementen in de array vinden door de grootte van de array in bytes te delen met de grootte van elk element in bytes:

char x[10];
int elements_in_x = sizeof(x) / sizeof(x[0]);

Voor het specifieke geval van char, sinds sizeof(char) == 1, sizeof(x)WORDT HETZELFDE resultaat.

Als u alleen een aanwijzer op een array hebt, is er geen manier om het aantal elementen in de gerichte array te vinden. Je moet dat zelf bijhouden. Bijvoorbeeld:

char x[10];
char* pointer_to_x = x;

Er is geen manier om te vertellen van alleen pointer_to_xdat het wijst naar een reeks van 10 elementen. Je moet die informatie zelf bijhouden.

Er zijn talloze manieren om dat te doen: u kunt het aantal elementen in een variabele opslaan of u kunt de inhoud van de array coderen, zodat u de grootte op de een of andere manier kunt krijgen door de inhoud ervan te analyseren (dit is effectief Beëindigde strings Doe: ze plaatsen een '\0'teken aan het einde van de string, zodat u weet wanneer de string eindigt).


Antwoord 3, Autoriteit 15%

Hoewel de eerdere antwoorden in orde zijn, is hier mijn bijdrage.

//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;
}

In je hoofdfunctie roep je de functie size aan door het adres van het eerste element van je array door te geven.

Bijvoorbeeld:

char myArray[] = {'h', 'e', 'l', 'l', 'o'};
printf("The size of my character array is: %d\n", size(&myArray[0]));

Antwoord 4, autoriteit 8%

U kunt strlen gebruiken

strlen(urarray);

Je kunt het zelf coderen, zodat je begrijpt hoe het werkt

size_t my_strlen(const char *str)
{
  size_t i;
  for (i = 0; str[i]; i++);
  return i;
}

als je de grootte van de array wilt, gebruik je sizeof

char urarray[255];
printf("%zu", sizeof(urarray));

Antwoord 5, autoriteit 6%

Als je de lengte van de tekenreeks wilt, gebruik dan sizeof(array)/sizeof(array[0]), als je de lengte van de tekenreeks wilt, gebruik dan strlen(array).


Antwoord 6, autoriteit 2%

Daar is ook een compact formulier voor, als je niet op strlen wilt vertrouwen. Ervan uitgaande dat de tekenreeks die u overweegt “msg” is:

 unsigned int len=0;
  while(*(msg+len) ) len++;

Antwoord 7

met behulp van sizeof()

char h[] = "hello";
printf("%d\n",sizeof(h)-1); //Output = 5

met behulp van string.h

#include <string.h>
char h[] = "hello";
printf("%d\n",strlen(h)); //Output = 5

met behulp van functie(strlenimplementatie)

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;
}

Antwoord 8

U kunt deze functie gebruiken:

int arraySize(char array[])
{
    int cont = 0;
    for (int i = 0; array[i] != 0; i++)
            cont++;
    return cont;
}

Antwoord 9

Bedoel je met ‘Tekenarray’ een tekenreeks? Zoals “hallo” of “hahaha dit is een reeks tekens”..

Hoe dan ook, gebruik strlen(). Lees er wat over, er is genoeg informatie over, zoals hier.

Other episodes