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 }
Muchas Gracias
Un saludo