Enunciado: Escriba una funcion para leer numeros de un archivo de datos que contenga una serie de
numeros reales a razon de uno o mas por lnea, separados por espacios. El prototipo debe ser
int lee_nro(char archivo[],double *num);
donde archivo contendra el nombre del archivo a leer y en num se devolvera el numero ledo. La funcion
en s devolvera verdadero si se ha podido leer un numero correctamente, y falso en caso contrario. Note
que la funcion debera devolver sucesivamente los distintos numeros del archivo cada vez que es llamada,
de modo que pueda utilizarse por ejemplo como sigue:
double a;
while (lee_nro(argv[1],&a))
printf("%gn",a);
Ayuda: recuerde la sentencia static.
El codigo que yo hice fue este:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int leer_nro(char archivo[],double *num);
void crear_archivo();
main()
{
double a;
crear_archivo ();
while(leer_nro("datonumeros.dat",&a))
printf("%fn",a);
}
int leer_nro(char archivo[], double*num)
{
FILE *nombre;
int cuantos;
int i=0;
nombre=fopen("datonumeros.dat","rb");
if (nombre==NULL)
{
printf("Error: no se puede abrir el ficheron");
}
num=(double*)malloc(sizeof(double)*cuantos);
if(*num==NULL) exit(1);
fread(num,sizeof(double),cuantos,nombre);
i=fread(num, sizeof(double), cuantos,nombre);
printf("el numero de valores leidos es %dn",i);
if (fclose(nombre)!=0)
{
printf("error al cerrar el ficheron");
exit(1);
}
return i;
}
void crear_archivo()
{
FILE *fp;
struct datos {
int N ;
double nums[6];
};
struct datos misdatos = {
.N = 6,
.nums = {1.1, 2.2, 3.3,}
};
fp = fopen("datonumeros.dat", "wb");
fwrite(&misdatos, sizeof(misdatos), 1, fp);
fclose(fp);
return;
}