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
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.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
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
- strcat () - Concatena stringhe
- strchr () - Ricerca carattere
- strcmp () - Confronta stringhe
- strcpy () - Copia stringhe
- strcspn () - Trova offset della prima corrispondenza carattere
- strspn () - Trova offset del primo carattere non corrispondente
- strtok_r () - Tokenize String (Riavviabile)
- <string.h>