Ho questa stringa: "ciao mondo come stai". Vorrei "spezzarla" usando come delimitatore lo spazio.
Ho letto la definizione di strtok, che è la funzione apposita e:
- La prima volta strtok va chiamata con la stringa da spezzare e la stringa dei delimitatori.
- Le volte successive con NULL come primo parametro e la stringa dei delimitatori, che puo' variare di volta in volta.
- Restituisce un puntatore al token individuato o NULL nel caso non sia
possibile individuare alcun token.
Ho preso spunto da questo codice:
#define DELIM " ,;.:\"'-?!"
int main()
{
char line[81]; /* suppongo che le linee siano al piu' 80 caratteri */
char *token;
int num_parole=0;
printf("Inserisci delle frasi e premi ^Z alla fine:\n");
while(gets(line)!=NULL)
{
token=strtok(line, DELIM);
while(token)
{
num_parole++;
printf("Parola individuata: %s\n", token);
token=strtok(NULL, DELIM);
}
}
printf("Il numero di parole inserite è %d\n", num_parole);
}
Ma io vorrei applicarla su una stringa non data da input.
Quindi:
#include <string.h>
#include <stdio.h>
int main()
{
char *str = "Ciao mondo come stai", *token;
int i = 0;
token = strtok(str, " ");
while(token)
{
printf("token: %s\n", token);
token = strtok(NULL, " ");
}
}
Errore di segmentazione (core dump creato) .. credo centri col fatto che
token = strtok(str, " "); venga chiamata solo una volta..?