strlen, strnlen_s
From cppreference.net
|
Definiert in Header
<string.h>
|
||
|
size_t
strlen
(
const
char
*
str
)
;
|
(1) | |
| (2) | (seit C11) | |
1)
Gibt die Länge der gegebenen nullterminierten Byte-Zeichenkette zurück, das heißt die Anzahl der Zeichen in einem Zeichen-Array, dessen erstes Element durch
str
adressiert wird, bis zum ersten Nullzeichen, dieses jedoch nicht einschließend.
Das Verhalten ist undefiniert, wenn
str
kein Zeiger auf eine nullterminierte Byte-Zeichenkette ist.
2)
Gleich wie
(1)
, außer dass die Funktion Null zurückgibt, falls
str
ein Nullzeiger ist, und
strsz
zurückgibt, falls das Nullzeichen nicht in den ersten
strsz
Bytes von
str
gefunden wurde.
Das Verhalten ist undefiniert, wenn
str
kein Zeiger auf eine nullterminierte Byte-Zeichenkette ist und
strsz
größer als die Größe dieses Zeichenarrays ist.
-
Wie bei allen grenzprüfenden Funktionen ist
strnlen_snur garantiert verfügbar, wenn __STDC_LIB_EXT1__ durch die Implementierung definiert ist und wenn der Benutzer __STDC_WANT_LIB_EXT1__ auf den Integer-Konstantenwert 1 setzt, bevor <string.h> eingebunden wird.
Inhaltsverzeichnis |
Parameter
| str | - | Zeiger auf den nullterminierten Byte-String, der untersucht werden soll |
| strsz | - | maximale Anzahl der zu untersuchenden Zeichen |
Rückgabewert
1)
Die Länge der nullterminierten Byte-Zeichenkette
str
.
2)
Die Länge der nullterminierten Byte-Zeichenkette
str
bei Erfolg, null falls
str
ein Nullzeiger ist,
strsz
falls das Nullzeichen nicht gefunden wurde.
Hinweise
strnlen_s
und
wcsnlen_s
sind die einzigen
bounds-checked functions
, die keinen Runtime-Constraints-Handler aufrufen. Es handelt sich um reine Hilfsfunktionen, die eingeschränkte Unterstützung für nicht nullterminierte Zeichenketten bereitstellen.
Beispiel
Diesen Code ausführen
#define __STDC_WANT_LIB_EXT1__ 1 #include <stdio.h> #include <string.h> int main(void) { const char str[] = "How many characters does this string contain?"; printf("without null character: %zu\n", strlen(str)); printf("with null character: %zu\n", sizeof str); #ifdef __STDC_LIB_EXT1__ printf("without null character: %zu\n", strnlen_s(str, sizeof str)); #endif }
Mögliche Ausgabe:
without null character: 45 with null character: 46 without null character: 45
Referenzen
- C23-Standard (ISO/IEC 9899:2024):
-
- 7.24.6.3 Die strlen-Funktion (p: TBD)
-
- K.3.7.4.4 Die strnlen_s-Funktion (p: TBD)
- C17-Standard (ISO/IEC 9899:2018):
-
- 7.24.6.3 Die strlen-Funktion (S.: TBD)
-
- K.3.7.4.4 Die strnlen_s-Funktion (S.: TBD)
- C11-Standard (ISO/IEC 9899:2011):
-
- 7.24.6.3 Die strlen-Funktion (S: 372)
-
- K.3.7.4.4 Die strnlen_s-Funktion (S: 623)
- C99-Standard (ISO/IEC 9899:1999):
-
- 7.21.6.3 Die strlen-Funktion (S: 334)
- C89/C90 Standard (ISO/IEC 9899:1990):
-
- 4.11.6.3 Die strlen-Funktion
Siehe auch
|
(C95)
(C11)
|
gibt die Länge einer Breitzeichen-Zeichenkette zurück
(Funktion) |
|
gibt die Anzahl der Bytes im nächsten Multibyte-Zeichen zurück
(Funktion) |
|
|
C++-Dokumentation
für
strlen
|
|