Sì, è bastato dichiarare dimensioni come int e aggiungere un piccolo controllino
codice:
....
if(fscanf(fPtr,"%d",&dimensioni)!=1 || dimensioni<0 || fgetc(fPtr)!='\n')
printf("Errore: ...\n");
else {...
per far funzionare tutto!
Solo una piccola nota: ho eliminato il comando
codice:
ungetc('\n',fPtr);
dopo aver letto la prima riga poichè non ho necessità di tornare indietro (tra l'altro tornerebbe indietro di un solo carattere)
Ho usato le funzioni fseek e ftell come mi hai suggerito:
codice:
fseek(fPtr,0L,SEEK_END);
int dimFile = ftell(fPtr)+1;
fseek(fPtr,0L,SEEK_SET);
printf("lunghezza file: %d\n", dimFile);
Solo che ho qualche problema a gestire la dimFile rtornata....non è che è colpa del fatto che il mio file non è un file binario? In tal caso dovrei sostituire le fscanf con fread e le fprintf con fwrite....giusto?