Ciao a tutti
ho un problema con la funzione strtok in questo programma
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#include<ctype.h>
#include<time.h>
int main() {    
    int i,j,nq=7;
    char *qspec[7],*p;
    char s2[]="#";
    qspec[0]= "M#Come si chiama il satellite della Terra?#4#B#Giove#Luna#Marte#Terra";
    qspec[1]= "W#Una provincia dell''Umbria#3#2#Terni#Perugia";
    qspec[2]= "N#Un numero primo tra 30 e 40#2#2#31#37";
    qspec[3]= "W#Un anagramma di torta#5#3#trota#rotta#ratto";
    qspec[4]= "N#In che anno nacque Dante Alighieri?#7#1#1256";
    qspec[5]= "M#Chi ha scritto l''Orlando Furioso?#5#C#Torquato Tasso#Dante Alighieri#Ludovico Ariosto#Giovanni Boccaccio";
    qspec[6]= "N#Un cubo di 4 cifre#4#13#1000#1331#1728#2197#17576#2474#3375#4096#4913#5832#6859#8000#9261#";
    for(i=0;i<nq;i++)
        printf("%s\n",qspec[i]);
    for(i=0;i<nq;i++){
        printf("%s ",strtok(qspec[i],s2));
        while((p=strtok(NULL,s2))!=NULL)
            printf("%s ",p);
        printf("\n");
    }
    return 0;
}
questa è una parte del programma, anche se è quella basilare.
In poche parole con le varie parti di ogni stringa di qspec (delimitate da #) devo creare una struct.
Il mio problema era come dividere le stringhe. Andando a spulciare le varie funzioni presenti in string.h ho trovato questa strtok che fa precisamente quello che mi serve.
Però quando eseguo questo programma, si chiude subito e se faccio il debug mi da errore di SEGFAULT. Secondo me dipende dal fatto che non accetta come primo argomento qspec
. Ho provato in un altro programma con una sola stringa definita nel main e strtok funzionava perfettamente. Altrimenti qualcuno conosce un altro modo per prendere parti di una stringa con un delimitatore(stavo pensando di usare strchr facendogli scorrere la stringa)?
grazie