|
| længte af char array Fra : Martin |
Dato : 07-02-04 13:38 |
|
Hejsa
Hvis jeg har et char array som fx. char stop[6];
som jeg i en lykke vil lægge elementer ind i, hvordan finder jeg så ud
af hvormange elementer der er i arrrayet?
(Måske søger jeg forkert men jeg kan ikke finde nogen funktion til at
finde længden.)
Martin
| |
Mogens Hansen (07-02-2004)
| Kommentar Fra : Mogens Hansen |
Dato : 07-02-04 16:45 |
|
"Martin" <me@privacy.invalid> wrote:
> Hvis jeg har et char array som fx. char stop[6];
> som jeg i en lykke vil lægge elementer ind i, hvordan finder jeg så ud
> af hvormange elementer der er i arrrayet?
Det skal du selv holde styr på.
Hvis arrayet udgør en tekststreng er det almindelig konvention at
nul-terminere strengen - altså '\0' til sidst.
I så fald kan du bruge funktionen strlen til at finde længden.
Hvis du anvender C++ er det ofte nemmere at anvende klassen std::string i
stedet
Hvis arrayet skal opfattes som indeholdende diskrete tegn, må du holde styr
på det på en anden måde. Det kan f.eks. være ved at have en integer ved
siden af, hvor man skriver hvormange der er, eller ved at _vide_ at alle
elementer i arrayet bliver brugt, eller ved at lade ubrugte elementer have
en særlig værdi (typisk '\0').
Hvis du anvender C++ er det ofte nemmere at anvende klassen
std::vector<char>, som holder styr på det for dig.
Venlig hilsen
Mogens Hansen
| |
Byrial Jensen (08-02-2004)
| Kommentar Fra : Byrial Jensen |
Dato : 08-02-04 10:50 |
|
Martin wrote:
> Hejsa
>
> Hvis jeg har et char array som fx. char stop[6];
> som jeg i en lykke vil lægge elementer ind i, hvordan finder jeg så ud
> af hvormange elementer der er i arrrayet?
Som Mogens Hansen siger skal man ofte selv holde styr på det, for
eksempel ved at have en særskilt variabel med antal elementer. Det
skyldes teknisk set at et array konverteres til en pointer når den
bruges som argument ved et funktionskald.
Men hvis arrayet virkelig er et array, findes der en standardmetode som
vises i dette program:
#include <stdio.h>
#define LEN(array) (sizeof array/sizeof *array)
int main ()
{
char ca[6];
printf ("ca har %zu elementer.\n", LEN(ca));
return 0;
}
Fidusen er at man tager den samlede størrelse af arrayet og deler det
med størrelsen af enkelt array-element. Resultatet er antal elementer.
Beregningen sker på oversættelsestidpunktet hvis det er muligt, og
ellers når programmet udføres.
| |
|
|