C-Programmierung
Zeichenkettenlänge (strlen)
← Variable Zeichenketten | ● | Zeichenkettenmanipulation →
Die Länge einer beliebigen Zeichenkette (d.h. char *) berechnet man durch die Suche nach der finalen 0:
unsigned int strlen(const char *str)
{
unsigned int len;
for (len=0; *str++!='\0'; len++);
return(len);
}
{
unsigned int len;
for (len=0; *str++!='\0'; len++);
return(len);
}
Diese Funktion ist bereits im Header string.h
definiert.
Damit kann man eine beliebige Zeichenkette duplizieren:
char *strdup(const char *str)
{
unsigned int len;
char *dup;
len=strlen(str);
dup=(char *)malloc(len+1);
memcpy(dup, str, len+1));
return(dup);
}
{
unsigned int len;
char *dup;
len=strlen(str);
dup=(char *)malloc(len+1);
memcpy(dup, str, len+1));
return(dup);
}
Diese Funktion ist ebenfalls im Header string.h
definiert.
Fallgrube: Die Funktion strdup()
reserviert einen neuen Speicherbereich. Vergisst man diesen nach Benutzung freizugeben, erhält man ein Speicherleck.