Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Ayuda básica. Tamaño de un fichero

Estas en el tema de Ayuda básica. Tamaño de un fichero en el foro de C/C++ en Foros del Web. Hola, mi problema creo que es bastante básico pero me he quedado atascado. Estoy haciendo un programa en c++ para comprimir archivos y en un ...
  #1 (permalink)  
Antiguo 16/05/2009, 12:51
 
Fecha de Ingreso: mayo-2009
Mensajes: 4
Antigüedad: 15 años
Puntos: 0
Ayuda básica. Tamaño de un fichero

Hola, mi problema creo que es bastante básico pero me he quedado atascado. Estoy haciendo un programa en c++ para comprimir archivos y en un determinado momento se me pide que compare el tamaño del fichero original con el comprimido y, la verdad, que no sé qué instrucciones utilizar, he probado con seekg y tellg, pero no me aclaro.
Alguien me puede ayudar???
Gracias
  #2 (permalink)  
Antiguo 16/05/2009, 14:21
Avatar de Claw  
Fecha de Ingreso: abril-2009
Mensajes: 299
Antigüedad: 15 años
Puntos: 9
Respuesta: Ayuda básica. Tamaño de un fichero

En Linux al menos existe la función fstat. Busca info y pruébala (no la he probado en entornos Windows).

Salu2
  #3 (permalink)  
Antiguo 17/05/2009, 13:34
 
Fecha de Ingreso: mayo-2009
Mensajes: 4
Antigüedad: 15 años
Puntos: 0
Respuesta: Ayuda básica. Tamaño de un fichero

Cita:
Iniciado por Claw Ver Mensaje
En Linux al menos existe la función fstat. Busca info y pruébala (no la he probado en entornos Windows).

Salu2
Por lo que he visto, fstat sí que me iría bien, ya que uno de los campos del struct stat es st_size, que es lo que busco, pero yo he de abrir el archivo así:

fstream f;
f.open("archivo.dat",ios::in|ios::binary);

y a stat hay que pasarle un int como primer argumento, vamos que no puedo hacer:
struct stat estado;
fstat (f, &estado);
cout<<estado.st_size<<endl;

porque me da error, por no pasarle un int a fstat. Estoy seguro que debe haber una forma sencilla para hacerlo, pero no logro dar con ella...
  #4 (permalink)  
Antiguo 17/05/2009, 14:08
Avatar de Claw  
Fecha de Ingreso: abril-2009
Mensajes: 299
Antigüedad: 15 años
Puntos: 9
Respuesta: Ayuda básica. Tamaño de un fichero

¿Y haciendo un cast "a lo salvaje"?

fstat((int) f, &estado);

Salu2
  #5 (permalink)  
Antiguo 18/05/2009, 05:32
 
Fecha de Ingreso: mayo-2009
Mensajes: 4
Antigüedad: 15 años
Puntos: 0
Sonrisa Respuesta: Ayuda básica. Tamaño de un fichero

Cita:
Iniciado por Claw Ver Mensaje
¿Y haciendo un cast "a lo salvaje"?

fstat((int) f, &estado);

Salu2
Tampoco me deja, me da error por operación inválida. Pero finalmente ya parece que consigo hallar el tamaño, así:

f.clear();
f.seekg(0, ios::end);
fstream::pos_type pos=f.tellg();
cout<<pos<<endl;

Mi problema es que, una vez abierto el archivo y haber operado con él, no usaba el f.clear() para resetear los 'flags', por eso haciendo lo mismo me daba -1, en lugar de 624, que es el tamaño correcto. Me estaba volviendo loco.
Pero muchísimas gracias por la ayuda y por el interés.
Saludos

Última edición por enlashojas; 18/05/2009 a las 05:48
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:05.