PROBLEMA problema apertura file in c

Pubblicità

hackthomas99

Nuovo Utente
Messaggi
2
Reazioni
0
Punteggio
30
salve , ho realizzato questo programma ,però quando vado ad inserire il nome del file ovvero file.txt , questo non viene aperto , infatti il programma mi stampa "errore file", come posso risolvere ? grazie.

Ho inserito il codice nei tag CODE ed inoltre ho ottimizzato l algoritmo, tuttavia persiste il problema citato precedentemente.
Scusate se prima mi sono dimenticato di usare i tag..
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 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';     //come posso inserire la stringa nel vettore manualmente? così ho inserito un carattere
    Vett2[i] = 0;
}
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';      //come posso inserire la stringa nel vettore manualmente? così ho inserito un carattere
}
void StampaInOrdineCrescenteDegliStudenti(char Vett1[DIM][LUN],float Vett2[DIM]){
    int i = 0;
    int pos;


    while(strcmp(Vett1[i],"0") != 0 ){
        pos = TrovaPosizioneMinimo(Vett2);
        printf("%s   %f\n",Vett1[pos],Vett2[pos]);
        Vett2[pos] = SALT;
        i = i + 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 + 2;
    }

    return i;
}
 
Ultima modifica:
Ciao, anzitutto quando si posta codice andrebbe messo nell'apposito tag CODE (selezionabile anche dal menù "inserisci" indicato da "..." accanto allo smile), possibilmente sistemando l'indentazione altrimenti diventa difficile da leggere.
Detto questo, il codice che hai postato non viene compilato, perché l'array bidimensionale vett1 viene trattato in più punti come se fosse monodimensionale. Inoltre, non si può riallocare un array statico, come tenti di fare nella procedura CancellaMinimoDaVett2, chiamando RiallocazioneVett2.
 
Detto questo, il codice che hai postato non viene compilato, perché l'array bidimensionale vett1 viene trattato in più punti come se fosse monodimensionale. Inoltre, non si può riallocare un array statico, come tenti di fare nella procedura CancellaMinimoDaVett2, chiamando RiallocazioneVett2.

No è semplicemente [ i ] che viene trattato come italic. Ma la gente non vuole usare sto benedetto tag CODE…
 
@Mursey ... hai fatto un gran cosa ad inserire il codice nel tag (e ad indentarlo)... solo che, come diceva giustamente @_Achille, tutti gli indici identificati con [ i ] sono stati definitivamente eliminati dal codice (sostituiti dalla formattazione italic)... per cui @hackthomas99 dovra' inserire nuovamente il suo codice: questo e' completamente inutile, ormai.
 
@Mursey ... hai fatto un gran cosa ad inserire il codice nel tag (e ad indentarlo)... solo che, come diceva giustamente @_Achille, tutti gli indici identificati con [ i ] sono stati definitivamente eliminati dal codice (sostituiti dalla formattazione italic)... per cui @hackthomas99 dovra' inserire nuovamente il suo codice: questo e' completamente inutile, ormai.
Giusto :cav:
Ho annullato la modifica, @hackthomas99 sei pregato di inserire il codice usando il tag CODE.
 
@hackthomas99 leggi la pagina del manuale per l’struzione fopen(), ti dice che ritorna zero se il file non esiste o se non hai i privilegi di lettura, in quel caso la variabile di sistema errno (definita nell’include <errno.h> ti dà maggiori informazioni sul tipo di errore.
Benvenuto nel forum :)
 
Pubblicità
Pubblicità
Indietro
Top