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