Dos cosas: paracoccidio que corregiste???
Segunda tu problema recide en que no le agregas el fin de cadena a prod y mod. Despues a demas tenias otro problemitas. Asi quedaria el codigo:
Código C++:
Ver original#include<iostream>
#include<fstream>
#include<stdio.h>
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
using namespace std;
int main()
{
int i,p,m;
float modulo;
bool espacio,finlinea=false;
char c,linea[30],prod[15],mod[15];
ifstream MiArchivo;
//ABRIMOS EL FICHERO
MiArchivo.open("datos.txt");
if (!MiArchivo.fail())
{
while (!MiArchivo.eof() )
{
//LEEMOS LA LINEA
MiArchivo.getline(linea,sizeof(linea));
i=17;
p=0;
m=0;
finlinea= espacio = false;
//ESTE IF ESTÁ PARA SALTAR LINEAS QUE NO QUEREMOS PARA NADA
{
while(i<30 && !finlinea)
{
c=linea[i];
//cout << c << endl;
if(c==' ')
espacio=true;
else if(c=='\n' || c == '\0')
finlinea=true;
else
{
//SI TODAVIA NO HEMOS ENCONTRADO EL ESPACIO,ES LA PRODUCCION
if(!espacio)
{
prod[p]=linea[i];
//cout << p << " " <<prod[p] << endl;
p++;
}
else
{
mod[m]=linea[i];
//cout << m << " " << mod[m] << endl;
m++;
}
}
i++;
}
prod[p] = 0;
mod[m] = 0;
cout<<"Produccion: "<<prod<<endl;
cout<<"Módulo: "<<mod<<endl;
}
else
cout<<linea<<endl;
}
MiArchivo.close();
}
else
printf ("No se pudo abrir el archivo.");
}
Por ejemplo, tenias la barra en el caractar nuevalinea al revez. Es esta \.
la variable espacio no estaba seteada a false para comenzar.
Buscabas el fin de linea pero nunca el '\0'