Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Lectura fichero .txt

Estas en el tema de Lectura fichero .txt en el foro de C/C++ en Foros del Web. Hola buenas, estoy un poco oxidado en C/C++ y tengo algún problemilla a la hora de leer un archivo txt. El contenido del archivo es ...
  #1 (permalink)  
Antiguo 27/05/2014, 17:54
 
Fecha de Ingreso: mayo-2014
Mensajes: 2
Antigüedad: 10 años, 5 meses
Puntos: 0
Pregunta Lectura fichero .txt

Hola buenas, estoy un poco oxidado en C/C++ y tengo algún problemilla a la hora de leer un archivo txt.

El contenido del archivo es similar a lo siguiente pero con muchos mas datos:

Sat1x Sat1y Sat2x Sat2y Sat3x Sat3y
0.443 0.211 0.033 1.444 0.987 0.655
2.443 1.511 7.033 5.222 1.957 2.355
...

Es decir, en la primera fila tengo los titulos de las columnas (texto), y a partir de la segunda fila todo son numeros. Yo en el programa que he escrito los he leido como floats, pero en realidad tienen mas decimales, ejemplo real 0.3344184786064943, pero con float creo que es suficiente.

Codigo:


int _tmain(int argc, _TCHAR* argv[])
{
float puntos[90000];
int contador=0;


FILE *Data= fopen("PlotData.txt", "r");

while (!feof(Data)){

fscanf(Data,"%f",&puntos[contador]);
printf("%f ",puntos[contador]);
contador++;

}

system("PAUSE");
return 0;
}

El problema esta en que de esta manera no funciona por la primera linea de caracteres, borrandola del .txt todo va perfecto menos los decimales...

La primera linea con titulos no la necesito!

Como puedo saltarme la primera linea sin que tenga que borrarla manualmente del archivo .txt???

he mirado diferentes funciones para leer como fgets, scanf no se como mover el puntero a la segunda linea para ya trabajar con fscanf y los floats.


Un saludo y muchas gracias de antemano!!
  #2 (permalink)  
Antiguo 29/05/2014, 04:45
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 12 años, 3 meses
Puntos: 83
Respuesta: Lectura fichero .txt

Es tan simple como parece: lee hasta el primer salto de linea, descarta lo leido y sigue con tu aplicacion:

Código C:
Ver original
  1. char buffer[100];
  2. Data = fopen("PlotData.txt", "r");
  3. fgets(buffer, sizeof(buffer), Data);
  4. //si quieres enfatizar que descartas el buffer puedes reescribiro a nulos
  5. memset(buffer, 0, sizeof(buffer));//no es necesario, solo omites lo leido
  6. while(...

fgets lee los bytes que le digas o hasta que encuentre un salto de linea o hast el final de archivo, lo que antes ocurra.

Saludos
vosk
  #3 (permalink)  
Antiguo 29/05/2014, 04:49
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 12 años, 3 meses
Puntos: 83
Respuesta: Lectura fichero .txt

"...no se como mover el puntero a la segunda linea.."

Si no sabes el nº de cracteres no debes mover el puntero de lectura. Obviamente podrias determinar el tamaño del archivo, y luego comprovar caracter por caracter hasta dar con el salto de linea, pero es mas facil usar el fgets que lo hace por ti.

Saludos
vosk
  #4 (permalink)  
Antiguo 29/05/2014, 06:18
 
Fecha de Ingreso: mayo-2014
Mensajes: 2
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: Lectura fichero .txt

Ok!! muchas gracias Vosk, ya suponía que sería poca cosa.

Como no quiero los datos los descarto y borro con memset, aunque como es un buffer aparte tampoco pasa nada.

Lo del puntero que decía es que también he mirado otro método de lectura, con el getline y el seekg.. si aqui le dijera (1) supongo que va a la linea 1.

Pero bueno que así ya me vale y no mareo más que esto solo es la lectura en la aplicación. ;)

Un saludo y gracias!!

Etiquetas: fichero, funcion, int, lectura, numero, programa, txt
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 06:44.