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