Domanda Lettura file in c

gius1805

Utente Bronze
13 Novembre 2020
42
22
0
38
Scrivere un programma apre in lettura un file di testo il cui nome, di al massimo 30 caratteri è chiesto all'utente. Il programma legge la sequenza di valori interi salvati nel file (la cui lunghezza non è nota a priori) e la visualizza.

C:
#include <stdio.h>

#define MAX 30

int main(){
    FILE* fp;
    char nome[MAX];
    int n;

    printf("inserire nome file: ");
    scanf("%[^\n]", nome);

    fp=fopen(nome, "r");
    if(fp){
        fscanf(fp, "%d", &n);
        while(!feof(fp)){
            printf("%d", n);
            fscanf(fp, "%d", &n);
        }
        fclose(fp);
    }
    else{
        printf("errore di apertura del file\n");
    }
    return 0;
}

Non capisco perché il programma non mi entra nel while(!feof(fp)). Una volta che inserisco il nome del file il programma non mi stampa nulla.
grazie in anticipo.
 
Ultima modifica:
Il problema risiede nel modo in cui hai impostato la funzione fscanf, perchè il suo valore di ritorno sarà 0, ciò significa che la funzione fallisce, io di rado uso il C (uso maggiormente il C++) quindi non saprei darti una versione corretta del codice, ma logicamente potresti leggere la prima entry del file come una stringa per poi mostrarla semplicemente a schermo.
In più mi pare che nel caso il file contenga solo una stringa, dopo la prima chiamata a fscanf avrai già raggiunto la fine del file, senza consecutivamente chiamare la funzione printf.