Ver Mensaje Individual
  #3 (permalink)  
Antiguo 12/07/2011, 20:35
sam90
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: Error al leer el fichero txt

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
  1. #include<iostream>
  2. #include<fstream>
  3. #include<stdio.h>
  4. #include<string.h>
  5. #include<stdio.h>
  6. #include<stdlib.h>
  7.  
  8. using namespace std;
  9.  
  10. int main()
  11. {
  12.   int i,p,m;
  13.   float modulo;
  14.   bool espacio,finlinea=false;
  15.   char c,linea[30],prod[15],mod[15];
  16.   ifstream MiArchivo;
  17.  
  18.   //ABRIMOS EL FICHERO
  19.   MiArchivo.open("datos.txt");
  20.  
  21.   if (!MiArchivo.fail())
  22.   {
  23.     while (!MiArchivo.eof() )
  24.     {
  25.       strcpy(linea,"");
  26.       strcpy(prod,"");
  27.       strcpy(mod,"");
  28.  
  29.       //LEEMOS LA LINEA
  30.       MiArchivo.getline(linea,sizeof(linea));
  31.  
  32.       i=17;
  33.       p=0;
  34.       m=0;
  35.       finlinea= espacio  = false;
  36.  
  37.       //ESTE IF ESTÁ PARA SALTAR LINEAS QUE NO QUEREMOS PARA NADA
  38.       if(strlen(linea)>17)
  39.       {
  40.        while(i<30 && !finlinea)
  41.        {
  42.             c=linea[i];
  43.             //cout << c << endl;
  44.         if(c==' ')
  45.                          espacio=true;
  46.             else  if(c=='\n' || c == '\0')
  47.                 finlinea=true;
  48.              else
  49.                 {
  50.                          //SI TODAVIA NO HEMOS ENCONTRADO EL ESPACIO,ES LA PRODUCCION
  51.                          if(!espacio)
  52.                          {
  53.                                 prod[p]=linea[i];
  54.                                 //cout << p << " " <<prod[p] << endl;
  55.                 p++;
  56.                           }
  57.  
  58.                           else
  59.                           {
  60.                                 mod[m]=linea[i];
  61.                                 //cout << m  << " " << mod[m] << endl;
  62.                 m++;
  63.                           }
  64.                  }
  65.          i++;
  66.          }
  67.      prod[p] = 0;
  68.          mod[m] = 0;
  69.          cout<<"Produccion: "<<prod<<endl;
  70.          cout<<"Módulo: "<<mod<<endl;
  71.       }
  72.       else
  73.         cout<<linea<<endl;
  74.     }
  75.     MiArchivo.close();
  76.   }
  77.   else
  78.    printf ("No se pudo abrir el archivo.");
  79.  
  80. }

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'