Ayuda con ficheros en C
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
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
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,
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,
