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.
Ops sorry per il titolo, non frequentando il forum non conosco le regole, la prossima volta cercherò di ricordarmelo!!

Vediamo se ho capito, il punto e virgola nel codice serve a dirgli che dopo ogni punto e virgola c'è un nuovo valore, abbastanza facile, mentre il ==5 si traduce in "finchè riempi 5 campi continua altrimenti fermati (e si fermerà alla fine del file visto che troverà 0 campi)", non capisco però come fa a capire di andare a capo ogni volta (sempre che non sia una proprietà della funzione fscanf).
Sono abbastanza sicuro della bontà file che sto importando quindi non credo mi possa servire di specificare quanti caratteri deve importare a campo, ad ogni modo grazie comunque per la dritta, non si sa mai!
Ho dato un'occhiata veloce alla guida che mi hai linkato e penso sia molto esaustiva, grazie mille per avermela postata.