salve ho realizzato questo programma in C , però quando vado ad inserire il nome del file, il file non viene letto e viene stampato "errore file". Come posso risolvere? Grazie.
codice:
/*leggere nome file di testo,  acquisire nome cognome e media da file di testo, *
 *e stampare gli studenti in ordine crescente in base alla loro media*/


#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define DIM 50
#define LUN 15
#define SALT 1


void AcquisireFileDiTesto(FILE **fp,char nome[DIM],char Vett1[DIM][LUN],float Vett2[DIM]);
void RiempireSpaziVuotiVett2(float Vett2[DIM]);
void CompattaVett1(char Vett1[DIM][LUN]);
void StampaInOrdineCrescenteDegliStudenti(char Vett1[DIM][LUN],float Vett2[DIM]);
int TrovaPosizioneMinimo(float Vett2[DIM]);


int main(){
    FILE *fp;
    char nome[DIM];
    char Vett1[DIM][LUN];
    float Vett2[DIM];


    printf("Inserisci il nome del file di testo (compreso di estensione) che vuoi aprire\n");
    scanf("%s",nome);


    AcquisireFileDiTesto(&fp,nome,Vett1,Vett2);
    CompattaVett1(Vett1);
    StampaInOrdineCrescenteDegliStudenti(Vett1,Vett2);


    system("pause");
    return 0;
}
void AcquisireFileDiTesto(FILE **fp,char nome[DIM],char Vett1[DIM][LUN],float Vett2[DIM]){
    char fine;
    int i = 0;
    int j = 0;
    *fp = fopen(nome,"r");


    if (*fp == NULL){
            printf("errore file");
        }


    while (fscanf(*fp,"%c",&fine) != '0' ) {
        fscanf(*fp,"%s %s %f\n",Vett1[i],Vett1[i+1],&Vett2[j]); //nome cognome media
        i = i + 1;
        j = j + 2;
    }


    fclose(*fp);


    Vett1[i][0] = '0';
    Vett2[i] = 0;
    RiempireSpaziVuotiVett2(Vett2);
}
void RiempireSpaziVuotiVett2(float Vett2[DIM]){
    int i = 0;


    while(Vett2[i] != 0){
        if (i%2 == 1){
            Vett2[i] = 1;
        }
        i = i + 1;
    }
}
void CompattaVett1(char Vett1[DIM][LUN]){
    int i = 0;


    while(strcmp(Vett1[i],"0") != 0 ){
        strcat(Vett1[i],Vett1[i+1]);
        i = i + 2;
    }
    Vett1[i][0] = '0';
}
void StampaInOrdineCrescenteDegliStudenti(char Vett1[DIM][LUN],float Vett2[DIM]){
    int i = 0;
    int j = 0;
    int pos;




    while(strcmp(Vett1[i],"0") != 0 ){
        pos = TrovaPosizioneMinimo(Vett2);
        printf("%s   %f\n",Vett1[pos+j],Vett2[pos]);
        Vett2[pos] = SALT;
        i = i + 1;
        j = j + 2;
    }


}
int TrovaPosizioneMinimo(float Vett2[DIM]){
    int i;
    int j = 0;
    int min = Vett2[j];




    while(Vett2[j] != 0){
        if (Vett2[j] < min && Vett2[j] != SALT){
            min = Vett2[j];
            i = j;
        }
        j = j + 1;
    }


    return i;
}