Lettura da un file in c

Messaggioda SalvatCpo » 11/07/2018, 15:50

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);
   printf ("%d\n", x);
   system ("PAUSE");
   return 0;
}



Nella stessa cartella in cui si trova il file.cpp c'è un documento di testo chiamato h e contenente un numero
in prima riga, ma nonostante ciò, quando compilo, visualizzo sempre 0. Perché? Grazie :)
SalvatCpo
Average Member
Average Member
 
Messaggio: 150 di 726
Iscritto il: 30/12/2017, 17:55

Re: Lettura da un file in c

Messaggioda SalvatCpo » 12/07/2018, 08:12

Ok, grazie per la risposta. Il codice postato giù fa una lettura "multipla" e contemporaneamente una scrittura su un altro file. Quando eseguo, mi crea m ma me lo riempie di infiniti 0, nonostante in f ci siano (limitati) numeri (diversi da 0).
Il motivo per cui il programma non funziona è lo stesso per cui non funziona quello postato sopra oppure sbaglio qualcosa con la eof?


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

// Scrivi un programma contenente una funzione che legge tutti i numeri inseriti, uno per riga, in un file di
// testo, e li scrive su un altro file raddoppiandoli.
void funzione (char nomefile[10]);
int main () {
   funzione ("f");
   system ("PAUSE");
   return 0;
}
void funzione (char nomefile[10]) {
   FILE *z;
   z = fopen (nomefile, "r");
   FILE *m;
   m = fopen("m.dat", "w");
   int l=0, b;
   do {
      fscanf (z, "%d\n", &l);
      b=2*l;
      fprintf (m, "%d\n", b);
      printf ("%d", l);
   } while (!feof(z));
}
SalvatCpo
Average Member
Average Member
 
Messaggio: 151 di 726
Iscritto il: 30/12/2017, 17:55

Re: Lettura da un file in c

Messaggioda SalvatCpo » 12/07/2018, 08:26

Poi c'è quest'altro con la fseek e anche questo stampa solo zero.
Ma, a parte questo, è corretto? Cioè, se voglio posizionarmi e leggere da quella posizione, è così che si fa, cioè prima fseek e poi fscanf?

E se non mi posiziono, vuol dire che automaticamente il puntatore si posiziona all'inizio del file?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

Codice:
// Scrivi un programma che legge e visualizza un numero da un file in una certa posizione
int main() {
   int x;
   FILE *h;
   h = fopen ("h", "r");
   fseek (h, 2, SEEK_SET);
   fscanf (h, "%d", &x);   
        printf ("%d\n", x);
   system ("PAUSE");
   return 0;
}
SalvatCpo
Average Member
Average Member
 
Messaggio: 152 di 726
Iscritto il: 30/12/2017, 17:55

Re: Lettura da un file in c

Messaggioda SalvatCpo » 12/07/2018, 11:24

Io sto preparando un esame (facoltà di fisica). La mia prof non tollera nemmeno se scrivo i=i+1 anziché i++.
Return 0 e System Pause lei ce li fa scrivere sempre.
Non so a cosa servano e non mi serve saperlo.
Quindi cerco di fare le cose seguendo le sue indicazioni.

Quello che mi preme sapere è se il codice con la eof e poi quello con la fseek sono concettualmente giusti e se, quando non si scrive la fseek, il posizionamento avviene automaticamente alla prima posizione.
SalvatCpo
Average Member
Average Member
 
Messaggio: 153 di 726
Iscritto il: 30/12/2017, 17:55


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite