strlen, strnlen_s
Von cppreference.com
| Definiert in Header <string.h> |
||
| size_t strlen( const char* str ); |
(1) | |
| (2) | (seit C11) | |
1) Gibt die Länge des gegebenen nullterminierten Byte-Strings zurück, d.h. die Anzahl der Zeichen in einem Zeichenarray, dessen erstes Element von str gezeigt wird, bis einschließlich des ersten Nullzeichens.
Das Verhalten ist undefiniert, wenn str kein Zeiger auf einen nullterminierten Byte-String ist.
2) Wie (1), außer dass die Funktion Null zurückgibt, wenn str ein Nullzeiger ist, und strsz zurückgibt, wenn das Nullzeichen nicht in den ersten strsz Bytes von str gefunden wurde.
Das Verhalten ist undefiniert, wenn str kein Zeiger auf einen nullterminierten Byte-String ist und strsz größer als die Größe dieses Zeichenarrays ist.
- Wie bei allen grenzgeprüften Funktionen ist
strnlen_snur garantiert verfügbar, wenn __STDC_LIB_EXT1__ von der Implementierung definiert ist und wenn der Benutzer __STDC_WANT_LIB_EXT1__ vor dem Einbinden von <string.h> auf die ganzzahlige Konstante 1 setzt.
Inhalt |
[bearbeiten] Parameter
| str | - | Zeiger auf den nullterminierten Byte-String, der untersucht werden soll |
| strsz | - | maximale Anzahl von zu untersuchenden Zeichen |
[bearbeiten] Rückgabewert
1) Die Länge des nullterminierten Byte-Strings str.
2) Bei Erfolg die Länge des nullterminierten Byte-Strings str, Null, wenn str ein Nullzeiger ist, strsz, wenn das Nullzeichen nicht gefunden wurde.
[bearbeiten] Anmerkungen
strnlen_s und wcsnlen_s sind die einzigen grenzgeprüften Funktionen, die den Laufzeit-Constraints-Handler nicht aufrufen. Sie sind reine Hilfsfunktionen, die zur eingeschränkten Unterstützung von nicht nullterminierten Strings verwendet werden.
[bearbeiten] Beispiel
Führen Sie diesen Code aus
#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
[bearbeiten] 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 (p: TBD)
- K.3.7.4.4 Die strnlen_s-Funktion (p: TBD)
- C11-Standard (ISO/IEC 9899:2011)
- 7.24.6.3 Die strlen-Funktion (p: 372)
- K.3.7.4.4 Die strnlen_s-Funktion (p: 623)
- C99-Standard (ISO/IEC 9899:1999)
- 7.21.6.3 Die strlen-Funktion (p: 334)
- C89/C90-Standard (ISO/IEC 9899:1990)
- 4.11.6.3 Die strlen-Funktion
[bearbeiten] Siehe auch
| (C95)(C11) |
gibt die Länge einer breiten Zeichenkette zurück (Funktion) |
| gibt die Anzahl der Bytes im nächsten Multibyte-Zeichen zurück (Funktion) | |
| C++-Dokumentation für strlen
| |