Problema sui files in c++

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

Risposte
Raptorista1
Compilando il tuo codice vedo questo:
$ 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.

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

Raptorista1
Con la modifica che hai scritto tu funziona correttamente sul mio computer.

SalvatCpo
Okay, grazie per il tuo aiuto :)

Raptorista1
Quello che voglio dire è che il codice è corretto, assicurati di aver ricompilato e cancella tutti i file temporanei.

SalvatCpo
Si, ho fatto, ma il problema è sempre lo stesso. Non mi resta che fidarmi del tuo computer :)

Raptorista1
Che compilatore stai usando? C'è qualche messaggio in output di compilazione?

SalvatCpo
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]

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