MaX-xXx
19-11-2014, 10:45
Albero LeggiAlberoFD(FILE *fd) {
Albero a;
int res, x;
char c;
/* legge la parentesi ( */
res=fscanf(fd, "%c", &c);
if(res!=1 || c!='(') {
ungetc(c, fd);
return NULL;
}
/* legge l'intero oppure ) */
res=fscanf(fd, "%c", &c);
if(res!=1 || c==')')
return NULL;
ungetc(c, fd);
fscanf(fd, "%d", &x);
/* crea il nodo */
a=malloc(sizeof(struct NodoAlbero));
a->radice=x;
a->sinistro=LeggiAlberoFD(fd);
a->destro=LeggiAlberoFD(fd);
/* legge ) */
fscanf(fd, "%c", &c);
return a;
}
Salve, i miei dubbi sono riguardo la funzione ungetc(c, fd).
Come funziona in questo caso?
Poi non capisco il secondo fscanf: come fa a memorizzare il secondo carattere senza chiamare prima la funzione ungetc(c, fd), che avanza al carattere successivo?
Per il resto è tutto chiaro.
Grazie per l'aiuto
Albero a;
int res, x;
char c;
/* legge la parentesi ( */
res=fscanf(fd, "%c", &c);
if(res!=1 || c!='(') {
ungetc(c, fd);
return NULL;
}
/* legge l'intero oppure ) */
res=fscanf(fd, "%c", &c);
if(res!=1 || c==')')
return NULL;
ungetc(c, fd);
fscanf(fd, "%d", &x);
/* crea il nodo */
a=malloc(sizeof(struct NodoAlbero));
a->radice=x;
a->sinistro=LeggiAlberoFD(fd);
a->destro=LeggiAlberoFD(fd);
/* legge ) */
fscanf(fd, "%c", &c);
return a;
}
Salve, i miei dubbi sono riguardo la funzione ungetc(c, fd).
Come funziona in questo caso?
Poi non capisco il secondo fscanf: come fa a memorizzare il secondo carattere senza chiamare prima la funzione ungetc(c, fd), che avanza al carattere successivo?
Per il resto è tutto chiaro.
Grazie per l'aiuto