Hola a todos:
Estoy realizando un proyecto y tengo que leer de cada línea de un fichero "txt" dos bloques distintos.
La estructura de la línea es la siguiente, los bloques están separados por un espacio en blanco:
FECHA " " HORA " " PRODUCCIÓN " " MÓDULO
Ejemplo:
2008-01-02 12:00 273 82.04
Tengo que leer la producción y el módulo, con lo que la fecha y la hora al ser constantes, empiezo a leer a partir de la posición 17. El problema me da al leer caracter a caracter, si muestro la línea entera, la enseña sin problemas, en cambio, sin voy carácter a carácter, me muestra muchísima basura. Por más vueltas que le he dado no hay forma de encontrar el fallo, espero que me podáis echar una mano.
Os adjunto el código a continuación:
Código C++:
Ver original#include<iostream.h>
#include<fstream.h>
#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
void main()
{
int i,p,m;
float modulo;
bool espacio,finlinea=false;
char c,linea[30],prod[5],mod[5];
ifstream MiArchivo;
//ABRIMOS EL FICHERO
MiArchivo.open("c:\\datos.txt");
if (!MiArchivo.fail())
{
while (!MiArchivo.eof() )
{
//LEEMOS LA LINEA
MiArchivo.getline(linea,sizeof(linea));
i=17;
p=0;
m=0;
finlinea=false;
//ESTE IF ESTÁ PARA SALTAR LINEAS QUE NO QUEREMOS PARA NADA
{
while(i<30 && !finlinea)
{
c=linea[i];
if(c==' ')
espacio=true;
if(c=='/n')
finlinea=true;
else
{
//SI TODAVIA NO HEMOS ENCONTRADO EL ESPACIO,ES LA PRODUCCION
if(!espacio)
{
prod[p]=linea[i];
p++;
}
else
{
mod[m]=linea[i];
m++;
}
}
i++;
}
cout<<"Produccion: "<<prod<<endl;
cout<<"Módulo: "<<mod<<endl;
}
else
cout<<linea<<endl;
}
MiArchivo.close();
}
else
printf ("No se pudo abrir el archivo."); }
Muchas Gracias
Un saludo