Lettura da un file in c
#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

Risposte
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?
Il motivo per cui il programma non funziona è lo stesso per cui non funziona quello postato sopra oppure sbaglio qualcosa con la eof?
#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)); }
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
#include
#include
#include
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
#include
#include
#include
// 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; }
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.
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.