Pagina 1 di 1

c++ Leggere da un file

MessaggioInviato: 05/09/2018, 12:11
da SalvatCpo
Codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

// Scrivi un programma che legge e visualizza un numero da un file
int main()
{
   int x;
   FILE *h;
   h = fopen ("h", "r");
   fscanf (h, "%d", &x); //x è una variabile quindi ci vuole & pke x solo nei vettori/stringhe è anche puntatore (alla prima cella)
   printf ("%d\n", x);
   system ("PAUSE");
   return 0;
}


Nella cartella in cui c'è questo codice, è presente anche un blocco note con un numero per ogni rigo, scritto andando a capo senza spazi.
Questo file si chiama "h".

Purtroppo l'eseguibile mi legge e stampa sempre 0, qualsiasi numero io scriva nel file.

Il file non ha problemi, perché ho scritto un programma che scrive numeri su questo file e funziona bene.

C'è qualche problema nel codice o nel compilatore… qualcuno saprebbe aiutarmi? Grazie in anticipo.

Re: c++ Leggere da un file

MessaggioInviato: 05/09/2018, 21:12
da Obidream
Ciao, premesso che quel codice di C++ ha ben poco, il file è fatto in questo modo giusto?

Codice:
2371
21
4
1234
124


Puoi provare ad eseguire questo codice anziché il tuo e mettere qui l'eventuale output? Ho semplicemente messo un controllo per verificare che il file venga aperto ed un ciclo while per leggere tutto il file.

Codice:
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    FILE *f;
    int x = -1;

    f = fopen("h","r");
   
    if(f == NULL) {
        perror("Error while opening the file ");
        exit(EXIT_FAILURE);
    }   
     
    while(fscanf(f, "%d", &x) != EOF) {
        printf("%d\n", x);
    }

    fclose(f);

    return EXIT_SUCCESS;
}

Re: c++ Leggere da un file

MessaggioInviato: 05/09/2018, 22:24
da SalvatCpo
Questo è l'output quando compilo il tuo codice:
Immagine

Questo era "h":
Immagine

Sembra che il programma "non veda" il file h.

Re: c++ Leggere da un file

MessaggioInviato: 05/09/2018, 23:06
da Obidream
Beh o metti il file nella stessa directory dell'eseguibile o passi il path assoluto del file alla fopen