Ho risolto tutto grazie valia per i tuoi consigli sono stati utilissimi mi sento pienamente soddisfatto ...qui di seguito posto tutto il programma:
codice:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define N 50
#define M 100

// Definizione del tipo Vettore e Stringa per array di reali e caratteri
typedef double Vettore[N];
typedef char Stringa[M];

// Prototipi delle funzioni
void read_vector(Vettore v, int* n, Stringa nome_file);
void print_vector(Vettore v, int n);
double max(Vettore v,int n);
double min(Vettore v,int n);
double mean(Vettore v, int n);
double var(Vettore v, int n);
int count_null(Vettore v,int n);
void process_vector(Vettore v, int n1, int* n2);
void save_vector(Vettore v, int n, Stringa nome_file);

//Svillupo funzioni

//Funzione che legge il vettore da file
void read_vector(Vettore v, int *n, Stringa nome_file)
{
    register int i;
    FILE *fp;
    int ret;
    fp=fopen(nome_file, "r");



    if(fp==NULL)
        printf("Errore nell'apewrtura del file.");
    else
    {
        ret=fscanf(fp, "%d", n);
        if(ret!=EOF)
        {
            //printf("\nNumero elementi vettore: %d \n", *n);                               Ricorda di eliminare riga a salvataggio compiuto......stronzoneeeeeeeeeeee
            if(*n>0)
            {
                for(i=0; i<*n; i++)
                {
                    fscanf(fp, "%lf", &v[i]);
                }
            }
        }
        else
            printf("\nIl file e' vuoto!!!!\n");

        fclose(fp);
    }
}

//Funzione che stampa a video il vettore letto precedentemente
void print_vector(Vettore v, int n)
{
    register int i;

    printf("[");
    for(i=0;i<n;i++)
    {
        if(i<(n-1))
            printf("%lf,", v[i]);
        else
            printf("%lf", v[i]);
    }
    printf("]\n");
}

//Funzione che ritorna il max tra gli elementi di un vettore
double max(Vettore v, int n)
{
    register int i;
    double max=v[0];

    for(i=0;i<n;i++)
    {
        if (v[i]>max)
            max=v[i];
    }
    return max;
}

//Funzione che ritorna il minimo tra gli elementi di un vettore
double min(Vettore v, int n)
{
    register int i;
    double min=max(v, n);

    for(i=0;i<n;i++)
    {
        if (v[i]<min)
            min=v[i];
    }

    return min;
}

//Funzione che ritorna la media degli elementi di un vettore
double mean(Vettore v, int n)
{
    register int i;
    double somma=0, media;

    for(i=0; i<n; i++)
    {
        somma+= v[i];
    }
    media=(somma/n);

    return media;
}

//Funzione che ritorna la varianza degli elementi di un vettore
double var(Vettore v, int n)
{
    register int i;
    double somma=0, var;

    for(i=0; i<n; i++)
    {
        somma+= pow((v[i]-mean(v, n)), 2);
    }

    var= (somma/n);
    return var;
}

//Funzione che ritorna il numero delle ricorrenze dei valori nulli all'interno di un vettore
int count_null(Vettore v,int n)
{
    register int i;
    int somma_nulli=0;

    for(i=0;i<n;i++)
    {
        if(v[i]==0)
        {
            somma_nulli+=1;
        }
    }

    return somma_nulli;

}


//Funzione che elimina gli 0 di un vettore e ritorna la nuova grandezza del vettore
void process_vector(Vettore v, int n1, int* n2)
{
    register int i, j=0, h;
    int z=0, posiz;
    Vettore m;
    for(i=0; i<n1;i++)
    {
        if(int(v[i])!=0)
        {
            m[j]=v[i];
            j++;
        }
    }
    for(h=0; h<j; h++)
    {
        v[h]=m[h];
    }

    *n2= j;
}


//Funzione che salva su file il nuovo vettore
void save_vector(Vettore v, int n, Stringa nome_file)
{
    register int i;
    FILE *fp;

    fp=fopen(nome_file, "w");
    if(!fp)
        printf("\nIl file non può essere salvato\n");
    else
    {
        fprintf(fp, "%d ", n);
        for(i=0; i<n; i++)
            fprintf(fp, "%lf ", v[i]);
    }
}

//Funzione coordinatrice
int main()
{
    Vettore magn, grav;
    Stringa filename, filename2, filename3, filename4;
    int n, m, j, k;

    printf("Inserire il nome del file contenente i valori dei campi magnetici: \n");
    scanf("%s", &filename);

    read_vector(magn, &n, filename);

    printf("Inserire il nome del file contenente i valori dei campi gravitazionali: \n");
    scanf("%s", &filename2);

    read_vector(grav, &m, filename2);

    printf("la media e la varianza dei valori del campo magnetico sono rispettivamente. \n %lf \t %lf \n", mean(magn, n), var(magn, n));
    printf("Il minimo e il massimo valore dei campi gravitazionali sono rispettivamente: \n %lf \t %lf \n", min(grav, m), max(grav, m));

    printf("Gli elementi nulli presenti nel campo magnetico/gravitazionale sono rispettivamente: \n %d \t\t %d\n", count_null(magn, n), count_null(grav, m));

    process_vector(magn, n, &j);
    process_vector(grav, m, &k);


    printf("Inserire i nomi dei file contenenti i valori dei campi magnetici e gravitazionali modificati: \n");
    scanf("%s %s", &filename3, &filename4);
    save_vector(magn, j, filename3);
    save_vector(grav, k, filename4);

    system("PAUSE");
    return 0;
}
grazie mille per l'aiuto