Originariamente inviato da ramy89
Questa procedura:
codice:
void separaparole(char frase [], char array[]){
char *s=strtok(frase, " ");
int i=0;
while(s!=NULL){
array[i]=*s;
i++;
s=strtok(NULL, " ");
}
}
Non è corretta, tu stai copiando solo la prima lettera di ogni parola.
Invece ti serve un array di stringhe.
Se vuoi mettere le varie parole in un array di stringhe innanzitutto cambia il parametro di ingresso con un puntatore a puntatore di char.
Poi scandisci i token, per ogni token trovato allochi memoria per la copiare il token nell' array di stringhe (ti regoli sulla lunghezza usando strlen).
E non copi solo il primo carattere, ma fai una strcpy:
[code]
// array è un array di stringhe, cioè un array di array di char
strcpy(array[i],s);
[code]
Se invece array era un array di char, siccome s è l' indirizzo del primo elemento dell' array (è come se fosse &s[0]), quando dichiari:
Stai copiando solo la prima lettera, cioè *(&s[0]), che è uguale a *s.
Comunque se a te bastava contare le parole, in separaparole ti bastava ritornare i,senza fare alcuna copia.