Strtok
La funzione strtok, presente in string.h ha il seguente prototipo:
char *strtok(s,ct)
e restituisce in s i token delimitati dai caratteri di ct. Il mio dubbio è questo: ct deve essere necessariamente una stringa ?
Ho provato a dichiarare una variabile "separatore" ed usarla,dopo averla letta da tastiera, nella funzione con pessimi risultati. Lo stesso carattere invece letto come stringa funzionava correttamente e in più, dopo la fine della stringa stampata token per token mi viene stampato a video anche il testo " ".
E' possibile eliminare il " " ed utilizzare un singolo carattere anziché una stringa ?
char *strtok(s,ct)
e restituisce in s i token delimitati dai caratteri di ct. Il mio dubbio è questo: ct deve essere necessariamente una stringa ?
Ho provato a dichiarare una variabile "separatore" ed usarla,dopo averla letta da tastiera, nella funzione con pessimi risultati. Lo stesso carattere invece letto come stringa funzionava correttamente e in più, dopo la fine della stringa stampata token per token mi viene stampato a video anche il testo "
E' possibile eliminare il "
Risposte
bhe se guardi la definizione in string.h noterai che è dichiarata in questo modo:
penso che questo ti chiarisca il dubbio.
Comunque come hai definito e dichiarato la variabile separatore (il pattern) ed anche come lo hai filtrato se lo hai preso da input (ci può essere spazzatura se non è fatto a dovere).
la funzione richiede una stringa, domandati cos'è una stringa?
char *strtok(char *str1, const char *str2);
penso che questo ti chiarisca il dubbio.
Comunque come hai definito e dichiarato la variabile separatore (il pattern) ed anche come lo hai filtrato se lo hai preso da input (ci può essere spazzatura se non è fatto a dovere).
E' possibile eliminare il "" ed utilizzare un singolo carattere anziché una stringa ?
la funzione richiede una stringa, domandati cos'è una stringa?
"hamming_burst":
E' possibile eliminare il "" ed utilizzare un singolo carattere anziché una stringa ?
la funzione richiede una stringa, domandati cos'è una stringa?
Scusa, non ti seguo.
La dichiarazione di strtok che hai riportato tu è diversa da quella che porta il libro che uso (Ansi C di kernighan e ritchie). Dove posso trovare delle definizioni piu dettagliate ? Dalla tua dichiarazione immagino che la risposta alla mia domanda sia che bisogna necessariamente usare una stringa
"Ryuzaky*":
La dichiarazione di strtok che hai riportato tu è diversa da quella che porta il libro che uso (Ansi C di kernighan e ritchie).
mi riporteresti la dichiarazione che è scritta su quel libro?
Dove posso trovare delle definizioni piu dettagliate ?
guugle è tuo amico per queste informazioni standardizzate

Dalla tua dichiarazione immagino che la risposta alla mia domanda sia che bisogna necessariamente usare una stringa
una stringa è un insieme di caratteri con terminatore carattere '\0' (NULL)
quello che vuoi te è semplicemente una stringa di lunghezza 1 (non contando il carattere terminatore). cioè un insieme di un singolo carattere.
"hamming_burst":
[quote="Ryuzaky*"]
La dichiarazione di strtok che hai riportato tu è diversa da quella che porta il libro che uso (Ansi C di kernighan e ritchie).
mi riporteresti la dichiarazione che è scritta su quel libro?
[/quote]
In effetti il K&R seconda edizione Prentice Hall a pagina 226-7 dice che il prototipo di strtok() e' esattamente quello che hai scritto tu:
char * strtok(s,ct)
laddove 's' e' il tipo char * e 'ct' e' il tipo const char *.
In giro con google ho anche trovato una implementazione in C di strtok(), dalla quale si evince che i delimitatori devono essere passati come una stringa, non come un carattere (vengono letti fino al '\0'), il che dovrebbe fugare ogni dubbio dell'OP.