Freigeben über


strnlen, strnlen_s, strnlen_l, wcsnlen, wcsnlen_s, wcsnlen_l, _mbsnlen, _mbsnlen_l, _mbstrnlen, _mbstrnlen_l

Ruft die Länge einer Zeichenfolge mithilfe des aktuellen Gebietsschemas oder das ab, das übergeben wurde.Diese sind sicherere Versionen von strlen, strlen_l, wcslen, wcslen_l, _mbslen, _mbslen_l, _mbstrlen, _mbstrlen_l.

Wichtiger HinweisWichtig

_mbsnlen, _mbsnlen_l, _mbstrnlen und _mbstrnlen_l können in Anwendungen nicht verwendet werden, die in Windows-Runtime ausführen.Weitere Informationen finden Sie unter CRT-Funktionen unterstützt nicht mit /ZW.

size_t strnlen( const char *str, size_t numberOfElements ); size_t strnlen_s( const char *str, size_t numberOfElements ); size_t strnlen_l( const char *str, size_t numberOfElements, _locale_t locale ); size_t wcsnlen( const wchar_t *str, size_t numberOfElements ); size_t wcsnlen_s( const wchar_t *str, size_t numberOfElements ); size_t wcsnlen_l( const wchar_t *str, size_t numberOfElements, _locale_t locale ); size_t _mbsnlen( const unsigned char *str, size_t numberOfElements ); size_t _mbsnlen_l( const unsigned char *str, size_t numberOfElements, _locale_t locale ); size_t _mbstrnlen( const char *str, size_t numberOfElements ); size_t _mbstrnlen_l( const char *str, size_t numberOfElements, _locale_t locale );

Parameter

  • str
    Auf NULL endende Zeichenfolge.

  • numberOfElements
    Die Größe des Zeichenfolgenpuffers.

  • locale
    Zu verwendende Gebietsschema.

Rückgabewert

Diese Funktionen geben die Anzahl der Zeichen in der Zeichenfolge, ohne das NULL zurück.Wenn kein abschließendes innerhalb der ersten numberOfElements Bytes der Zeichenfolge (oder der Breitzeichen für wcsnlen) gibt, wird numberOfElements zurückgegeben, um den Fehlerzustand anzugeben, auf NULL endende Zeichenfolgen Längen haben, die ausschließlich kleiner als numberOfElements sind.

_mbstrnlen und _mbstrnlen_l geben -1 zurück, wenn die Zeichenfolge ein ungültiges Mehrbytezeichen enthält.

Hinweise

HinweisHinweis

strnlen ist kein Ersatz für strlen; strnlen wird soll verwendet werden, um die Größe von eingehenden nicht vertrauenswürdigen Daten in einem Puffer aus bekannten Größe – z. B. ein Netzwerkpaket nur zu berechnen.strnlen abgeleitet, die Länge jedoch wird nicht hinter dem Ende des Puffers durch, wenn die Zeichenfolge nicht abgeschlossenen ist.Für andere Situationen verwendet strlen.(Dasselbe gilt für wcsnlen, _mbsnlen und _mbstrnlen zu.)

Jede dieser Funktionen gibt die Anzahl der Zeichen in str, ohne das NULL zurück.jedoch interpretieren strnlen und strnlen_l die Zeichenfolge als Einzelbyte-Zeichenfolge und daher, ist der Rückgabewert immer gleich der Anzahl von Bytes, auch wenn die Zeichenfolge Mehrbytezeichen enthält.wcsnlen und wcsnlen_l sind Breitzeichenversionen von strnlen und von strnlen_l bzw.; die Argumente für wcsnlen und wcsnlen_l sind Breitzeichen-Zeichenfolgen und die Anzahl der Zeichen sind in den Breitzeichen Einheiten.Andernfalls verhalten sich wcsnlen, wcsnlen_l, strnlen und strnlen_l identisch.

strnlen, wcsnlen, und _mbsnlen überprüfen nicht ihre Parameter.Wenn strNULL ist, tritt eine Zugriffsverletzung auf.

strnlen_swcsnlen_s überprüfen und ihre Parameter.Wenn strNULL ist, die Funktionsrückgabe 0.

_mbstrnlen überprüft auch seine Parameter.Wenn strNULL ist oder wenn numberOfElements größer als INT_MAX ist, generiert _mbstrnlen eine ungültige Parameterausnahme, wie in Parametervalidierung beschrieben.Wenn die Ausführung zulässig ist, um fortzufahren, legt _mbstrnlenerrno zu EINVAL fest und gibt -1 zurück.

Zuordnung generische Textroutinen

TCHAR.H-Routine

_UNICODE & _MBCS nicht definiert.

_MBCS definiert

_UNICODE definiert

_tcsnlen

strnlen

strnlen

wcsnlen

_tcscnlen

strnlen

_mbsnlen

wcsnlen

_tcscnlen_l

strnlen_l

_mbsnlen_l

wcsnlen_l

_mbsnlen und _mbstrnlen geben die Anzahl der Mehrbytezeichen in einer Mehrbyte-Zeichenfolge zurück._mbsnlen erkennt Mehrbytezeichensequenzen entsprechend der Mehrbyte-Codepage, die gerade verwendet wird oder gemäß dem Gebietsschema, das übergeben wird, sie testet nicht für Mehrbytezeichengültigkeit._mbstrnlen Tests für Mehrbytezeichengültigkeit und erkennt Mehrbytezeichensequenzen.Wenn die Zeichenfolge, die an _mbstrnlen übergeben wird, ein ungültiges Mehrbytezeichen enthält, wird errno zu EILSEQ festgelegt.

Der Ausgabewert wird durch die Einstellung der LC_CTYPE Kategorieneinstellung des Gebietsschemas betroffen; setlocale, _wsetlocale finden Sie weitere Informationen.Die Versionen dieser Funktionen sind identisch, nur die, die nicht die _l Suffixverwendung das aktuelle Gebietsschema für dieses gebietsschemaabhängigen Verhalten und die Versionen haben, die das _l Suffix stattdessen den Gebietsschemaparameter verwendet werden, der übergeben wird.Weitere Informationen finden Sie unter Gebietsschema.

Anforderungen

Routine

Erforderlicher Header

strnlen, strnlen_s, strnlen_l

<string.h>

wcsnlen, wcsnlen_s, wcsnlen_l

<string.h> oder <wchar.h>

_mbsnlen, _mbsnlen_l

<mbstring.h>

_mbstrnlen, _mbstrnlen_l

<stdlib.h>

So zusätzlicher Kompatibilitätsinformation finden Sie unter Kompatibilität.

Beispiel

// crt_strnlen.c

#include <string.h>

int main()
{
   // str1 is 82 characters long. str2 is 159 characters long 

   char* str1 = "The length of a string is the number of characters\n"
               "excluding the terminating null.";
   char* str2 = "strnlen takes a maximum size. If the string is longer\n"
                "than the maximum size specified, the maximum size is\n"
                "returned rather than the actual size of the string.";
   size_t len;
   size_t maxsize = 100;

   len = strnlen(str1, maxsize);
   printf("%s\n Length: %d \n\n", str1, len);
   
   len = strnlen(str2, maxsize);
   printf("%s\n Length: %d \n", str2, len);
}
  
  
  
  

.NET Framework-Entsprechung

System::String::Length

Siehe auch

Referenz

Zeichenfolgenbearbeitung (CRT)

Gebietsschema

Interpretation von Mehrbytezeichen-Sequenzen

setlocale, _wsetlocale

strncat, _strncat_l, wcsncat, wcsncat_l, _mbsncat _mbsncat_l

strncmp, wcsncmp, _mbsncmp, _mbsncmp_l

strcoll Funktionen

strncpy_s, _strncpy_s_l, wcsncpy_s, _wcsncpy_s_l, _mbsncpy_s, _mbsncpy_s_l

strrchr, wcsrchr, _mbsrchr, _mbsrchr_l

_strset, _strset_l, _wcsset, _wcsset_l, _mbsset, _mbsset_l

strspn, wcsspn, _mbsspn, _mbsspn_l