Spezzare stringa in base ad un carattere

di Anonimizzato21540 il
6 risposte
Salve ho scritto questo codice che dovrebbe spezzare la stringa finche non trova il char " ". l ho provato su una stringa normale del tipo char a[7]="1 1 5 7" e funziona ma quando utilizzo la seguente stringa mi da errore di segmentazione
char* good[] = {
  "1 1 3 4",
  NULL,
};
int main (void)
{ char  *ptr, *s;
  int i;
  s=good[0];
  ptr = strtok(s," ");
  fprintf(stderr," %s\n", ptr);

6 Risposte

  • Strok non può lavorare su una literal string, perché deve modificarla per fare il suo lavoro.
  • Ah grazie , come faccio a risolvere quindi?
  • Guarda queste linee
    
    char good[] = "1 1 3 4";
    
    int main(void)
    {
    	char  *ptr = strtok(good, " ");
    	fprintf(stderr, " %s\n", ptr);
    }
    
  • alessandrodoss ha scritto:


    Ah grazie , come faccio a risolvere quindi?
    Come hai fatto nel primo esempio: utilizzando qualcosa di modificabile, come un array di caratteri che contiene una stringa
  • Grazie ho risolto ho copiato la literal string in un array e ora funziona
  • Hai visto il codice che ti ho suggerito?
Devi accedere o registrarti per scrivere nel forum
6 risposte