[C con Clase] fscanf

Steven Davidson steven en conclase.net
Mie Mar 14 17:33:30 CET 2007


Hola Daniel,

El pasado 2007-03-14 15:49:47, dani escribió:

d> Hola a todos,
d> estoy probando la función fscanf pero no consigo que me funcione si alguien me puede ayudar se lo agradeceré. Me he echo el programa siguiente que me parecía bastante simple pero que no se porque no funciona,

Me temo que no nos dices cuál es el problema, porque sinceramente no es aparente. De todas maneras, supongo que el problema está en que el contenido del fichero de salida "dens_out.dat" no corresponde con el contenido de "dens_in.dat" que debería haber leído con 'fscanf()'. Por esta razón, nos dices que 'fscanf()' te está dando problemas, porque no parece leer la información correctamente.

Bien. Tienes dos errores al usar 'fscanf()':

1. Estás usando el especificador %e, que es incorrecto para el tipo 'double'. Debes usar %le.

2. Interpones un espacio para el especificador; o sea, escribes: "% e % e". Esto es incorrecto; no introduzcas espacios al menos que existan.

Al final, deberías tener lo siguiente:

fscanf( in_dat, "%le %le\n", &rhob[ir][iz], &rhof[ir][iz] );

Lo mismo sucede con 'fprintf()'; deberías tener:

fprintf( out_dat, "%le %le\n", rhob[ir][iz], rhof[ir][iz] );


También tienes otro error en tu programa: no liberas la memoria que creaste previamente para 'rhob' y 'rhof'.


Espero haber aclarado las dudas.

Steven


Más información sobre la lista de distribución Cconclase