Problema sui files in c++
#include
#include
#include
#include
// Scrivi un programma contenente una funzione che legge tutti i numeri inseriti, uno per riga, in un file di
// testo, li scriva 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);
fprintf (m, "%d\n", 2*l);
printf ("%d", l);
} while (!feof(z));
}
Il file f contiene dei numeri in riga:
22
55
34
...
Eppure il risultato dell'esecuzione è questo:


Cosa c'è che non va?
#include
#include
#include
// Scrivi un programma contenente una funzione che legge tutti i numeri inseriti, uno per riga, in un file di
// testo, li scriva 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);
fprintf (m, "%d\n", 2*l);
printf ("%d", l);
} while (!feof(z));
}
Il file f contiene dei numeri in riga:
22
55
34
...
Eppure il risultato dell'esecuzione è questo:


Cosa c'è che non va?
Risposte
Compilando il tuo codice vedo questo:
che è abbastanza per capire dov'è il problema, direi.
$ gcc main.c main.c: In function 'funzione': main.c:21:20: warning: format '%d' expects argument of type 'int *', but argument 3 has type 'int' [-Wformat=] fscanf (z, "%d\n", l); ^
che è abbastanza per capire dov'è il problema, direi.
Ho aggiunto & (la E commerciale) come si fa nella scanf. L'ho messa ovviamente prima di l come sembra suggerire il tuo warning, ma l'errore persiste.
Con la modifica che hai scritto tu funziona correttamente sul mio computer.
Okay, grazie per il tuo aiuto

Quello che voglio dire è che il codice è corretto, assicurati di aver ricompilato e cancella tutti i file temporanei.
Si, ho fatto, ma il problema è sempre lo stesso. Non mi resta che fidarmi del tuo computer

Che compilatore stai usando? C'è qualche messaggio in output di compilazione?
Uso dev c++ come indicato dalla docente.
L'unico messaggio è il seguente ed è riferito alla riga dove scrivo: funzione ("f"), cioè quando invoco la funzione.
[Warning] deprecated conversion from string constant to 'char*' [-Wwrite-strings]
L'unico messaggio è il seguente ed è riferito alla riga dove scrivo: funzione ("f"), cioè quando invoco la funzione.
[Warning] deprecated conversion from string constant to 'char*' [-Wwrite-strings]