• Non ci sono risultati.

Funzione strtok La funzione strtok

N/A
N/A
Protected

Academic year: 2021

Condividi "Funzione strtok La funzione strtok"

Copied!
2
0
0

Testo completo

(1)

Funzione strtok

La funzione strtok della libreria string.h serve per spezzare una stringa s in base a dei caratteri di separazione.

char *strtok(char *s, char *sep);

Quando viene chiamata con s!=NULL, la funzione controlla gli elementi della stringa e posiziona un puntatore (p) nel primo carattere che non sia un separatore. Poi prosegue fino al successivo separatore dove viene posizionato il carattere '\0'. A questo punto restituisce il puntatore p.

Successive chiamate con s==NULL, eseguono le stesse operazioni partendo però dalla posizione in cui si era fermato il puntatore alla chiamata precedente e restituendo un puntatore alla parola successiva.

char s[]="1AB213CD0FR931";

char del[]="0123456789";

char *p;

s 1 A B 2 1 3 C D 9 F R 9 3 1

p=strtok(s,del); // p="AB"

s 1 A B \0 1 3 C D 9 F R 9 3 1

p

p=strtok(NULL,del); // p="CD"

s 1 A B \0 1 3 C D \0 F R 9 3 1

p

p=strtok(NULL,del); // p="FR"

s 1 A B \0 1 3 C D \0 F R \0 3 1

p

p=strtok(NULL,del); // p=NULL

s 1 A B \0 1 3 C D \0 F R \0 3 1

Il risultato è quello di avere ad ogni passo la variabile p che punta ad una sottostringa della stringa iniziale.

(2)

Tutte queste operazioni possono essere effettuate con un ciclo for:

for(p=strtok(s,del); p!=NULL; p=strtok(NULL,del)) ...

Implementazioni alternative della funzione strtok possono sostituire tutti i caratteri di separazione con tanti '\0':

s \0 A B \0 \0 \0 C D \0 F R \0 \0 \0

oppure sostituire un blocco di caratteri di separazione con un unico '\0' eliminando i separatori iniziali e finali:

s A B \0 C D \0 F R \0

Indipendentemente dall'implementazione interna, il comportamento esterno della funzione è sempre lo stesso e cioè quello di far si che p punti successivamente a delle stringhe che rappresentano le parole di s dove per parola si intende una sottostringa separata dalle altre dai separatori.

Riferimenti

Documenti correlati

Generalmente il confronto può essere fatto tra due generici puntatori che puntano allo stesso tipo di dato; questo confronto è comunque significativo solo nel caso in

Scrivere una funzione componiFrase che prende come parametri un puntatore ad un array di indici, la lunghezza dell’array e un puntatore ad un buffer.. La funzione deve chiamare

Questo equivale a dire che occorre di- mostrare formalmente che il massimo ` e sempre il primo elemento della lista.. Mos- triamo una bozza di dimostrazione

ƒ restituisce un puntatore che contiene l’indirizzo del blocco di memoria allocato, cioè della variabile, la quale sarà quindi accessibile dereferenziando il puntatore. ƒ la

■ Quindi il vero argomento della prima funzione non é la seconda funzione, ma un normale valore, che può avere qualsiasi origine (variabile, espressione ecc...), e in particolare

Tale funzione può essere chiamata non citandone esplicitamente il nome, ma usando la variabile puntatore. Maggior

________________; l’ausiliare dei verbi intransitivi è, in genere, essere. Sul quaderno scrivi due frasi con ciascuno dei verbi dati, usandoli la prima volta transitivamente e

Nel caso dell'elaboratore questo è essenziale; infatti, la velocità gli permette di non preoccuparsi eccessivamente della lunghezza dei numeri, mentre le regole relative alla