Originariamente inviato da MItaly
Direi più che altro:
codice:
while(fscanf(fp,"%s;%d;%d;%d;%s",pop.data,pop.reg,pop.cont,pop.tipo,pop.conto)==5)
Se noti, al posto delle virgole ho messo dei punti e virgola (dato che i tuoi campi sono appunto separati da punti e virgola), e al posto di !=EOF ho messo ==5. Questo perché fscanf restituisce il numero di campi letti correttamente, e in caso di errore di lettura (ad esempio, una stringa invece di un numero) è importante fermare la lettura invece di andare avanti con risultati scorretti.
Inoltre, al posto di %s dovresti usare %Ns, dove N è il numero massimo di caratteri da leggere - anche qui è importante, dato che altrimenti rischi un buffer overflow nelle stringhe della struttura che stai popolando.
In ogni caso, ti rimando alla
documentazione della fscanf, che spiega esattamente come funziona e come viene gestita la stringa di formato.
---
Tra parentesi, il linguaggio di riferimento va indicato nel titolo, qui lo aggiungo io, in futuro ricordatene.