Quando leggi i dati da un file di testo, di solito li leggi in senso "lineare", uno dopo l'altro. Quindi, se il tuo file ha una struttura di questo tipo...
4
5 1.3
3 9.3
15 6.27
8 3.2
...prima leggi il valore che ti dà la quantità delle righe coi dati, poi passi a leggere i valori successivi uno ad uno, o a coppie.
Potresti quindi fare un singolo ciclo for (non due annidati) e ad ogni passaggio chiamare due volte fscanf() per ottenere un valore alla volta, oppure chiamare fscanf() una sola volta per ottenere due valori alla volta...
// un valore per chiamata
for( i=0; i<*nEl; i++ ) {
fscanf(fp, "%d", (*mins)+i);
fscanf(fp, "%f", (*maree)+i);
}
// oppure...
// due valori per chiamata
for( i=0; i<*nEl; i++ ) {
fscanf(fp,"%d %f", (*mins)+i, (*maree)+i);
}
In entrambi i casi ti converrebbe verificare che fscanf() abbia letto come si deve i dati -- quando legge qualcosa restituisce la quantità degli elementi letti, quando non riesce a leggere niente restituisce EOF.
// un valore per chiamata
for( i=0; i<*nEl; i++ ) {
if( 1!=fscanf(fp,"%d",(*mins)+i) ) {
// errore! fai qualcosa!
}
if( 1!=fscanf(fp,"%f",(*maree)+i) ) {
// errore! fai qualcosa!
}
}
// oppure...
// due valori per chiamata
for( i=0; i<*nEl; i++ ) {
if( 2!=fscanf(fp,"%d %f",(*mins)+i,(*maree)+i) ) {
// errore! fai qualcosa!
}
}