devo creare un file con scritto su ogni riga una zona e un numero
le zone sono V U F.

file:

V 23 F 78 U 32 F 67
V 43 U 234 F 67 V 19

dopo averlo creato devo leggerlo dicendo quante volte compare una zona, la media di ogni zona.

ho scritto printf("uno") due e tre per vedere quando si blocca il programma e si blocca sempre dopo il 2 ma non capisco il motivo! qualche suggerimento?? grazie in anticipo
codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define L 29
#define soglia 50
int main()
{


FILE*ff;
ff=fopen("aree.txt","w");
if(ff==NULL){
    printf("Errore scrittura");
}
printf("uno");

 char st[L],s[L];
 char v[4];
 int w[4];
 int i,j;
 int contv=0,contf=0,contu=0;
 int sommav=0,sommaf=0,sommau=0;
 int medv=0,medf=0,medu=0;
 int maggu=0;

for(i=0;i<2;i++){
gets(st);
fprintf(ff,"%s",st);}

fclose(ff);

 printf("due");

ff=fopen("aree.txt","r");
if(ff==NULL){
    printf("Errore lettura");

     printf("tre");

while(fgets(s,28,ff)!=NULL){
fgets(s,28,ff);
sscanf(s,"%c %d %c %d %c %d %c %d",v[0],w[0],v[1],w[1],v[2],w[2],v[3],w[3]);
for(j=0;j<4;j++){
    if(v[j]=='V'){
            contv++;
            sommav=w[j]+sommav;
        }
    if(v[j]=='F'){
            contf++;
            sommaf=w[j]+sommaf;
    }
    if(v[j]=='U'){
            contu++;
    }       sommau=w[j]+sommau;
            if(w[j]>soglia){
                maggu++;
            }
}
}
fclose(ff);
 printf("quattro");
medv=sommav/contv;
medf=sommaf/contf;
medu=sommau/contu;

printf("numero ettari Verdi:%d\n",contv);
printf("numero ettari Fluviali:%d\n",contf);
printf("numero ettari Urbani:%d\n\n",contu);

printf("altezza media Verde:%d \n",medv);
printf("altezza media Fluviale:%d\n",medf);
printf("altezza media Urbana:%d\n\n",medu);


printf("numero aree con altezza maggiore a %d: %d\n",soglia,maggu);

    return 0;
}
}