Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/08/2014, 15:13
Ch3Ch0
 
Fecha de Ingreso: octubre-2011
Mensajes: 17
Antigüedad: 13 años, 4 meses
Puntos: 0
Exclamación Problema con tellg() - Archivos

Hola, como estan? aqui yo molestando con un nuevo problema jaja, a ver si me pueden ayudar. Bueno, resulta que quiero sacar el tamaño del archivo con tellg y siempre me da -1 (con tellp me da lo mismo), y no le encuentro la vuelta, no se en que puedo estar fallando.
Aca les dejo dejo el codigo

Código C++:
Ver original
  1. #include <iostream>
  2. #include <fstream>
  3.  
  4. using namespace std;
  5. class prueba {
  6.     int p;
  7. public:
  8.     void escribir();
  9.     void leer();
  10. };
  11.  
  12. void prueba::escribir() {
  13.     cin>>p;
  14. }
  15. void prueba::leer() {
  16.     cout<<"Numero "<<p<<endl;
  17. }
  18.  
  19.  
  20. int main(int argc, char *argv[]) {
  21.     prueba P[3];
  22.     fstream archivo;
  23.    
  24.     archivo.open("probar", ios::in | ios::out | ios::binary);
  25.     archivo.seekg(0);
  26.    
  27.     for(int i=0; i<3;i++){
  28.     cout<<"Numero "<<i+1<<": ";
  29.     P[i].escribir();
  30.     archivo.write((char *) &P, sizeof P);
  31.     }
  32.     archivo.seekg(0);
  33.     cout<<"\n";
  34.    
  35.     for(int i=0; i<3; i++) {
  36.     archivo.read((char *) &P, sizeof P);
  37.     P[i].leer();
  38.     }
  39.    
  40.     int L = sizeof(P);
  41.    
  42.     cout<<"\n";
  43.    
  44.     cout<<"Longitud archivo: "<<L;
  45.     cout<<"\n";
  46.    
  47.     int m;
  48.     cout<<"Ingresar numero de objeto: ";
  49.     cin>>m;
  50.     int pos = (m-1) * L;
  51.    
  52.     //cout.setf(ios::hex, ios::basefield);
  53.     cout<<"Posicion Objeto: "<<pos<<"\n";
  54.    
  55.    
  56.     archivo.seekg(0);
  57.    
  58.     int start = archivo.tellg ();
  59.     cout<<"Start: "<<start<<endl;
  60.     archivo.seekg (0, ios :: end);
  61.    
  62.     int end = archivo.tellg ();
  63.     cout<<"End: "<<end<<endl;
  64.     int size = (end - start);
  65.     cout<<"Size: "<<size<<endl;
  66.    
  67.    
  68.    
  69.     archivo.seekg(0, ios::end);
  70.     long TamTotal = archivo.tellg();
  71.     cout<<"Tamanio Total: "<<TamTotal;
  72.     cout<<"\n";
  73.     int CantObj = TamTotal/L;
  74.     cout<<"Cantidad de Objetos: "<<CantObj;
  75.    
  76.     archivo.close();
  77.    
  78.     return 0;
  79. }

Por ahi tambien puede ser que algunas de las sentencias tengan un error logico y no me estoy dando cuenta, lo raro es que siempre me da como resultado -1