strtok () - Stringa token

Formato

#include <string.h>
char *strtok(char *string1, const char *string2);

Livello lingua

ANSI

Protetto dal sottoprocesso

No

Utilizzare invece strtok_r() .

Sensibile alla locale

Il funzionamento di questa funzione potrebbe essere influenzato dalla categoria LC_CTYPE della locale corrente. Per ulteriori informazioni, consultare Descrizione dei CCSID e delle locale.

Descrizione

La funzione strtok() legge string1 come una serie di zero o più token e string2 come la serie di caratteri utilizzati come delimitatori dei token in string1. I token in string1 possono essere separati da uno o più delimitatori da string2. I token in string1 possono essere individuati da una serie di chiamate alla funzione strtok() .

Nella prima chiamata alla funzione strtok() per una determinata string1, la funzione strtok() ricerca il primo token in string1, ignorando i delimitatori iniziali. Viene restituito un puntatore al primo token.

Quando la funzione strtok() viene richiamata con un argomento NULL string1 , il token successivo viene letto da una copia memorizzata dell'ultimo parametro string1 non null. Ogni delimitatore viene sostituito da un carattere null. La serie di delimitatori può variare da chiamata a chiamata, in modo che string2 possa assumere qualsiasi valore. Tenere presente che il valore iniziale di string1 non viene conservato dopo la chiamata alla funzione strtok() .

Notare che la funzione strtok() scrive i dati nel buffer. La funzione deve essere inoltrata ad un buffer non critico contenente la stringa da tokenizzare perché il buffer verrà danneggiato dalla funzione strtok() .

Valore restituito

La prima volta che viene richiamata la funzione strtok() , restituisce un puntatore al primo token in string1. Nelle chiamate successive con la stessa stringa di token, la funzione strtok() restituisce un puntatore al token successivo nella stringa. Viene restituito un puntatore NULL quando non ci sono più token. Tutti i token sono null - ended.
Nota: la funzione strtok() utilizza un puntatore statico interno per puntare al token successivo nella stringa che viene tokenizzata. Una versione rientrante della funzione strtok() , strtok_r(), che non utilizza alcuna memoria statica interna, può essere utilizzata al posto della funzione strtok() .

Esempio

Utilizzando un loop, questo esempio raccoglie i token, separati da virgole, da una stringa finché non viene lasciato alcun token. L'esempio stampa i token, a string, ofe tokens.
#include <stdio.h>
#include <string.h>
 
int main(void)
{
   char *token, *string = "a string, of, ,tokens\0,after null terminator";
 
   /* the string pointed to by string is broken up into the tokens
      "a string", " of", " ", and "tokens" ; the null terminator (\0)
      is encountered and execution stops after the token "tokens"     */
   token = strtok(string, ",");
   do
   {
      printf("token: %s\n", token);
   }
   while (token = strtok(NULL, ","));
}
 
/*****************  Output should be similar to:  *****************
 
token: a string
token:  of
token:
token: tokens
*/

Informazioni correlate