ulteriore approfondimento :
se avessi voluto leggere da un file .txt una stringa , un carattere e un numero , con la funzione fscanf , come avrei dovuto comportarmi
mi spiego :

fscanf elimina gli spazi (da quanto ho capito ) , per stringhe e interi , ma non per caratteri

dunque

ipotesi

codice:
typedef struct {
char  nome [10] ;
char sesso ;
int annoDiNascita ;
} persona ;


.........
persona persona [5] ;
FILE *Ptr ;

.........

if ((Ptr = fopen ("persona.txt" , "r" ) ) != NULL )

while ( !feof (Ptr ) ) 

{

fscanf ( Ptr , "%s" , persona[i].nome ) ;


fscanf(Ptr , "%d" , &persona[i].annoDiNascita ) ; 

i++ ;

....................................
}
allora in questo modo la fscanf legge anche gli spazi e dunque salta il carattere che mi interessa ("sesso")


diversamente aggiungendo dentro il while madre in while nidificato

codice:
while ((ch = fgetc (Ptr) ) == ' ' ) ;   /*riga1*/
persona[i].annoDiNascita = ch ;     /*riga 2 */

fscanf (Ptr , %d\n" , &persona[i].annoDiNascita ) ;
i++ ;
ora non capisco in che modo le righe 1 e 2 possano eliminare gli spazi e leggere il carattere corretto ;
qualcuno può darmi una delucidazione?


grazie