C++ Leggere da un file

SalvatCpo
#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.

Risposte
Obidream
Ciao, premesso che quel codice di C++ ha ben poco, il file è fatto in questo modo giusto?

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.

#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;
}

SalvatCpo
Questo è l'output quando compilo il tuo codice:


Questo era "h":


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

Obidream
Beh o metti il file nella stessa directory dell'eseguibile o passi il path assoluto del file alla fopen

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.