ho dei problemi quando vado a compilare il programma (usando -Wall), ve li elenco così magari qualcuno riesce a dirmi il problema...
- Il primo esce quando uso la funzione strtok di string.h, in questo modo:
Codice:
tok = strtok(p, ';');
passing argument 2 of ‘strtok’ makes pointer from integer without a cast [enabled by default]
/usr/include/string.h:348:14: note: expected ‘const char * __restrict__’ but argument is of type ‘int’
Mi pare di capire che legge il punto e virgola come intero invece che come carattere?
- Il secondo problema è quando uso il qsort, sto facendo sicuramente qualche errore con il casting... l'errore precisamente è nella funzione di comparazione che ho definito così:
Codice:
int cmpautore(const void *p1, const void *p2) {
int n;
if (n= cmpstringp(*(scheda_t*)p1->autore->cognome, *(scheda_t*)p2->autore->cognome) != 0) return n;
return cmpstringp(*(scheda_t*)p1->autore->nome, *(scheda_t*)p2->autore->nome);
}
warning: dereferencing ‘void *’ pointer [enabled by default]
error: request for member ‘autore’ in something not a structure or union
scheda_t è una struttura, autore è un puntatore a struttura dentro scheda_t...
cioè
Codice:
typedef scheda{
autore_t* autore;} scheda_t;
p1 e p2 che passo nella compare sono appunto due puntatori a scheda_t