Condividi tramite


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

Ottiene la lunghezza di una stringa utilizzando le impostazioni locali correnti o quella che è stata passata.Questi sono più versioni sicure di strlen, strlen_l, wcslen, wcslen_l, _mbslen, _mbslen_l, _mbstrlen, _mbstrlen_l.

Nota importanteImportante

_mbsnlen, _mbsnlen_l, _mbstrnlene _mbstrnlen_l non possono essere utilizzati nelle applicazioni eseguite in Windows Runtime.Per ulteriori informazioni, vedere Funzioni CRT non supportate con /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
);

Parametri

  • str
    Stringa con terminazione Null.

  • numberOfElements
    La dimensione del buffer di stringa.

  • locale
    Impostazioni locali da utilizzare.

Valore restituito

Queste funzioni restituiscono il numero di caratteri della stringa, escluso il carattere di terminazione null.Se non è presente un terminatore null all'interno del primo byte di numberOfElements stringa (o i caratteri di tipo " wide " per wcsnlen), quindi numberOfElements viene restituito per indicare la condizione di errore, le stringhe con terminazione null hanno lunghezze che vengono rigorosamente minore di numberOfElements.

_mbstrnlen e _mbstrnlen_l restituiscono -1 se la stringa contiene un carattere multibyte non valido.

Note

[!NOTA]

strnlen non sostituisce per strlen; strnlen deve essere utilizzato solo per calcolare la dimensione dei dati non attendibili in ingresso in un buffer del noto di di, ad esempio un pacchetto di rete.strnlen calcola la lunghezza ma non viene eseguito oltre la fine del buffer se la stringa è non terminata.Per altre situazioni, utilizzare strlen.(Lo stesso viene applicato a wcsnlen, a _mbsnlene a _mbstrnlen).

Ognuna di queste funzioni restituisce il numero di caratteri in str, escluso il carattere di terminazione null.Tuttavia, strnlen e strnlen_l come interpretare la stringa come stringa di caratteri a byte singolo, pertanto il valore restituito è sempre uguale al numero di byte, anche se la stringa contiene caratteri multibyte.wcsnlen e wcsnlen_l disponibili versioni a caratteri estesi di strnlen e di strnlen_l rispettivamente, gli argomenti per wcsnlen e wcsnlen_l sono stringhe di caratteri estesi e il numero di caratteri in unità a caratteri estesi.In caso contrario, wcsnlen, wcsnlen_l, strnlen e strnlen_l si comportano in modo identico.

strnlen, wcsnlen, e _mbsnlen non convalidano i relativi parametri.Se str è NULL, una violazione di accesso si verifica.

strnlen_s e wcsnlen_s convalidano i relativi parametri.Se str è NULL, tornare 0 di funzioni.

_mbstrnlen anche convalida dei parametri.Se str è NULL, o se numberOfElements è maggiore di INT_MAX, _mbstrnlen generato un'eccezione non valida di parametro, come descritto in Convalida dei parametri.Se l'esecuzione è consentita per continuare, _mbstrnlen imposta errno a EINVAL e restituisce -1.

Mapping di routine a Testo generico

TCHAR.H routine

_UNICODE & _MBCS non definiti

_MBCS definito

_UNICODE definito

_tcsnlen

strnlen

strnlen

wcsnlen

_tcscnlen

strnlen

_mbsnlen

wcsnlen

_tcscnlen_l

strnlen_l

_mbsnlen_l

wcsnlen_l

_mbsnlen e _mbstrnlen restituisce il numero di caratteri multibyte in una stringa di caratteri multibyte._mbsnlen riconosce le sequenze di caratteri multibyte in base alla tabella codici multibyte attualmente utilizzata o seconda delle impostazioni locali passate in; non stanno la validità di caratteri multibyte.i test di_mbstrnlen la validità di caratteri multibyte e riconosce le sequenze di caratteri multibyte.Se la stringa passata a _mbstrnlen contiene un carattere multibyte non valido, errno è impostato su EILSEQ.

Il valore di output è interessato dall'impostazione dell'impostazione di categoria di LC_CTYPE delle impostazioni locali; vedere setlocale, _wsetlocale per ulteriori informazioni.Le versioni di queste funzioni sono identiche, eccetto quelli che non dispongano dell'utilizzo di _l le impostazioni locali correnti per questo comportamento dipendente dalle impostazioni locali e le versioni che hanno il suffisso di _l utilizzare invece il parametro delle impostazioni locali passato.Per ulteriori informazioni, vedere Impostazioni locali.

Requisiti

Routine

Intestazione obbligatoria

strnlen, strnlen_s, strnlen_l

<string.h>

wcsnlen, wcsnlen_s, wcsnlen_l

<string.h> o <wchar.h>

_mbsnlen, _mbsnlen_l

<mbstring.h>

_mbstrnlen, _mbstrnlen_l

<stdlib.h>

Per informazioni aggiuntive di compatibilità, vedere Compatibilità.

Esempio

// 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);
}
  
  
  
  

Equivalente .NET Framework

System::String::Length

Vedere anche

Riferimenti

Modifica delle stringhe (CRT)

Impostazioni locali

Interpretazione delle sequenze di caratteri multibyte

setlocale, _wsetlocale

strncat, _strncat_l, wcsncat, wcsncat_l, _mbsncat _mbsncat_l

strncmp, wcsncmp, _mbsncmp, _mbsncmp_l

funzioni di strcoll

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