Condividi tramite


sscanf, _sscanf_l, swscanf, _swscanf_l

Dati formattati letti da una stringa.Più versioni sicure di queste funzioni sono disponibili, vedere sscanf_s, _sscanf_s_l, swscanf_s, _swscanf_s_l.

int sscanf(
   const char *buffer,
   const char *format [,
   argument ] ... 
);
int _sscanf_l(
   const char *buffer,
   const char *format,
   locale_t locale [,
   argument ] ... 
);
int swscanf(
   const wchar_t *buffer,
   const wchar_t *format [,
   argument ] ... 
);
int _swscanf_l(
   const wchar_t *buffer,
   const wchar_t *format,
   locale_t locale [,
   argument ] ... 
);

Parametri

  • buffer
    dati archiviati

  • format
    stringa del Formato-controllo.Per ulteriori informazioni, vedere Specifiche di formato.

  • argument
    argomenti facoltativi

  • locale
    le impostazioni locali da utilizzare

Valore restituito

Ognuna di queste funzioni restituisce il numero di campi correttamente conversione e assegnati; il valore restituito non include campi che sono stati letti ma non assegnato.Un valore restituito pari a 0 indica che nessun campo è stato assegnato.il valore restituito è EOF per un errore o la fine della stringa viene raggiunta prima della prima conversione.

se buffer o format è un oggetto NULL il puntatore, il gestore non valido di parametro viene richiamato, come descritto in Convalida dei parametri.Se l'esecuzione è consentita per continuare, queste funzioni restituiscono -1 e impostate errno in EINVAL.

Per informazioni su questi e altri codici di errore, vedere _doserrno, errno, _sys_errlist e _sys_nerr.

Note

sscanf la funzione legge i dati da buffer nella posizione specificata da ognuno argument.ogni argument deve essere un puntatore a una variabile con un tipo che corrisponde a un identificatore del tipo in format.format l'argomento controlla interpretazione dei campi di input e presenta lo stesso form e di funzione format argomento per scanf funzione.Se copiare si trova tra le stringhe che si sovrappongono, il comportamento sarà indefinito.

Nota sulla sicurezzaNota sulla sicurezza

Durante la lettura di una stringa con sscanf, specificare sempre una larghezza per %s la formattazione, ad esempio "%32s" anziché "%s"); in caso contrario, l'input in un formato inappropriato può facilmente causare un sovraccarico del buffer.

swscanf è una versione a caratteri estesi di sscanf; gli argomenti a swscanf sono le stringhe di caratteri estesi.sscanfnon gestisce i caratteri esadecimali multibyte.swscanf non gestisce caratteri a byte doppio dell'area di esadecimale o “di compatibilità„ Unicode.In caso contrario, swscanf e sscanf comportano in modo identico.

le versioni di queste funzioni con _l il suffisso è identico con la differenza che utilizzano il parametro delle impostazioni locali passato alle impostazioni locali del thread corrente.

Mapping di routine a testo generico

routine di TCHAR.H

_UNICODE & _MBCS non definiti

_MBCS definito

_UNICODE definito

_stscanf

sscanf

sscanf

swscanf

_stscanf_l

_sscanf_l

_sscanf_l

_swscanf_l

Requisiti

routine

Intestazione di associazione

sscanf, _sscanf_l

<stdio.h>

swscanf, _swscanf_l

<stdio.h> o <wchar.h>

per informazioni di compatibilità aggiuntive, vedere compatibilità nell'introduzione.

Esempio

// crt_sscanf.c
// compile with: /W3
// This program uses sscanf to read data items
// from a string named tokenstring, then displays them.

#include <stdio.h>

int main( void )
{
   char  tokenstring[] = "15 12 14...";
   char  s[81];
   char  c;
   int   i;
   float fp;

   // Input various data from tokenstring:
   // max 80 character string:
   sscanf( tokenstring, "%80s", s ); // C4996
   sscanf( tokenstring, "%c", &c );  // C4996
   sscanf( tokenstring, "%d", &i );  // C4996
   sscanf( tokenstring, "%f", &fp ); // C4996
   // Note: sscanf is deprecated; consider using sscanf_s instead

   // Output the data read
   printf( "String    = %s\n", s );
   printf( "Character = %c\n", c );
   printf( "Integer:  = %d\n", i );
   printf( "Real:     = %f\n", fp );
}
  

Equivalente .NET Framework

vedere Parse metodi, ad esempio System:: doppio:: Di traccia.

Vedere anche

Riferimenti

Flusso I/O

fscanf, _fscanf_l, fwscanf, _fwscanf_l

scanf, _scanf_l, wscanf, _wscanf_l

sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l

_snprintf, _snprintf_l, _snwprintf, _snwprintf_l