C/Visual C - Leer fichero con datos numericos

 
Vista:

Leer fichero con datos numericos

Publicado por Pepe (5 intervenciones) el 27/08/2007 20:22:40
Hola, mi duda creo que es sencilla pero que no se por que a mi se me ha complicado tanto.
La cosa es leer de un fichero de texto, valores numericos (float en concreto) , y lugo operar con ellos. Supongamos que cada valor ocupa una linea del fichero. Para operar con numeros lo simplifique aun mas poniendo enteros en el fichero y aún asi nada.

El fichero supongamos que contiene:
5
7
8
----
Y el codigo para leer el fichero es:

int fich1;
int buffer;
int status;
int bytesLeidos;

if((fich1 = open("Origen.txt",O_RDONLY,0666))==-1){
perror("Error al abrir el fichero origen");
}

while((bytesLeidos = read( fich1 , (char *)&buffer , sizeof(int)))>0 ){
printf("%i\n",buffer);
}

Este codigo lo hize para probar los valores que extraia del fichero y como estos no eran lo deseado.
Por que por ejemplo pasandolo por el debugger obtengo valores que no se corresponden a los del fichero,suelen ser numeros muy altos.etc

Si fuera posible me gustaria ver la solucion tb para valores float (5.47 , 7.136 , ....), por que estado muchas horas machacandome con esta 'tonteria'.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Leer fichero con datos numericos

Publicado por Tom (619 intervenciones) el 28/08/2007 10:05:26
Lo que tienes escrito en el fichero es texto, así que no debes leerlo como si se tratara de valores "binarios".

Lee texto (que es lo que has escrito) y luego usa strtol() o similares para convertir a valores numéricos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Leer fichero con datos numericos

Publicado por PEPE (5 intervenciones) el 28/08/2007 13:50:11
Pero realmente se puede leer un fichero que contiene datos numericos,aunque sea texto, de forma directa sin conversiones posteriores de tipo. Pero no se que puede fallar. En cuanto a lo de la funcion, creo que el ejercicio digamos que 'no permite' usar funciones auxiliares de conversion, solo se haria de forma directa como he tratado de hacer.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Leer fichero con datos numericos

Publicado por AntonioG (42 intervenciones) el 28/08/2007 15:22:54
Hola,

No, no se puede leer de manera directa. O tu haces la conversion o utilizas una funcion que lo haga.

Los unios valores que tal vez puedas guardar y leer directamente son los de tipo char, ya que ocupan lo mismo que un caracter. Asi un caracter representaria un valor y no una letra (si vieras el archivo como tetxo verias pura basura).

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Leer fichero con datos numericos

Publicado por Pepe (5 intervenciones) el 28/08/2007 17:25:01
Y usando una conversion manual como seria...tratando el tema de los caracteres fin de linea,puntos (q separa al numero en parte entera y decimal), etc...buff esperaba terminar pronto la cosa pero veo q me llevara un ratiyo mas de lo esperado.

Si alguien me arroja un poco d luz sobre el tema...

Saludos y Gracias (RIP Antonio Puerta)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Leer fichero con datos numericos

Publicado por Tom (619 intervenciones) el 29/08/2007 11:06:55
A ver. Se lee de la misma forma en que se escribe. Si escribes el caracter '5' debes leerlo como carácter y si escribes el número 5 deberás leer el número 5.
La representación binaria es totalmente distinta para un caso que para el otro.

Por otra parte, convertir el caracter '5' en el int 5 es tan fácil como:

char pp = '5';
int ipp = pp - '0';
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Leer fichero con datos numericos

Publicado por Pepe (5 intervenciones) el 29/08/2007 15:26:38
Esacto. El fichero esta escrito como texto. La conversion esta bien pero para numeros sueltos pero cuando se trata de numeros float, tipo: 5.471 entonces ese tipo de conversion no serviria y digo yo que habria q implementar una en funcion de los delimitadores tipo el punto,el fin de linea,etc...o es mas sencillo de lo q creo??

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Leer fichero con datos numericos

Publicado por Tom (619 intervenciones) el 31/08/2007 11:14:25
Revisa mis respuestas.
Mira atoi() y similares.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar