Ayuda con ficheros en C

chabal0880
20 de Noviembre del 2009
Hola a todos..
Miren estoy atascado en un programa que estoy realizando en lenguage C, el caso es que necesito guardar unos valores de tipo double en fichero txt y mas tarde recurrir a ellos y cargarlos en las variables. Es decir, si yo tengo 10 valores de tipo double, quiero que estos se me guarden en un txt en orden, para más tarde volver a cargarlos en las mismas variables de tipo double. El tema de guardar las variables en un txt lo controlo usando la funcion :

file_handle=fopen (pathname, "w+"); //Abro fichero en modo escritura
fprintf (file_handle, "%f\n", p1); //copio en el archivo la variable "p1" fprintf (file_handle, "%f\n", p2);
fprintf (file_handle, "%f\n", p3);
fprintf (file_handle, "%f\n", p4);
fclose (file_handle); //Cierro fichero

Lo que necesito saver es la manera de llamar de nuevo a ese archivo txt y volver a cargar los valores en las variables; he probado con la funcion "fgets" pero solamente se pueden llamar datos de tipo "char".
Así que necesito ayuda de los savios en C para salir del paso; por si sirve uso entorno cvi pero admite la programacion de c.
Saludos y gracias de antemano

Capitan Kirk
20 de Noviembre del 2009
Para leer el archivo de texto, básicamente tienes que hacer lo mismo que ya hiciste para crearlo, solo que debes utilizar fscanf para leer los datos. Con arreglo a lo que escribiste:

file_handle = fopen(pathname, "r"); // Abre para lectura
fscanf (file_handle, "%lf", &p1);
fscanf (file_handle, "%lf", &p2);
fscanf (file_handle, "%lf", &p3);
fclose (file_handle);

Es decir, una vez abierto el fichero para lectura, lees los datos con fscanf del mismo modo que los leerías del teclado con scanf.

Fíjate en el detalle del formato de fscanf (pasa igual con scanf): Puesto que el número que quieres leer es un double, debes emplear "%lf" en lugar de "%f", este último sería para un float de 32 bits. Si no tienes cuidado, habrá problemas.

No sé qué versión de CVI utilizas, pero, por poco moderno que sea, tiene un conjunto de ayudas excelente. Yo utilizo CVI (versión 7.1), si necesitas ayuda no tienes más que dejar un post.

Saludos,

prog20
20 de Noviembre del 2009
vale ya me he apañado divinamente utilizando unas funciones nuevas que encontre en cvi.
Gracias Capitan Kirk