C/Visual C - Leer Contenido de Archivos

 
Vista:

Leer Contenido de Archivos

Publicado por MasterZero (2 intervenciones) el 06/06/2004 17:55:06
Hola a todos!!!

bien, mi problema es el siguiente, quiero leer el contenido de cualquier archivo, (esto es en C++), lo que necesito es: abrir un archivo para lectura, y leer la mitad de ese archivo para guardar esa mitad en uno nuevo.

Eso es lo que necesito, pero no he podido hacerlo por que con la funcion fread tengo que decirle el numero de bytes que necesito leer, esto seria el numero de bytes que pesa el archivo / 2, pero no he encontrado ninguna funcion que me regrese el numero de bytes que pesa un archivo....

¿Alguien puede ayudarme?

de ante mano muchas gracias!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Ideas de solucion en C normal

Publicado por s (3 intervenciones) el 07/06/2004 02:26:44
Hola.

Desconozco mucho de C++ así que no te puedo dar una función de biblioteca estandar para obtener el tamaño de un archivo, que creo que es tu principal problema. Hasta donde yo sé, creo que ni en la biblioteca normal de C existe una función para obtener el tamaño de un archivo, sin embargo, existe un truco.
La función fseek() (consulta la sintaxis correcta en un manual) coloca el indicador de posición de archivo en un lugar especifico. fseek() falla cuando no puede colocar el indicador de posición. Lo que puedes hacer es un ciclo desde 1 hasta el tamaño máximo de un long y ver hasta donde puedes colocar el apuntador con fseek(). Cuando fseek() falle quiere decir que probablemente llegaste al fin de archivo y tomando nota del maximo valor al que llegaste tratando de poner el apuntador de posición de archivo, ya puedes saber el tamaño del archivo.
Un ejemplo con pseudocódigo en C (no tengo compilador a la mano) es:

FILE *un_archivo = fopen( "mi archivo", rb);
for(int i = 0; i< 234567890; i++)
{
int error = fseek( un_archivo, i, 0); //consultar sintaxis correcta
if( error != 0)
break; //termina el ciclo
}

printf("El tamaño del archivo es: %d", i);

Espero que te sirva. Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Ideas de solucion en C normal

Publicado por chuidiang (677 intervenciones) el 07/06/2004 08:09:48
Con fseek() puedes ir directamente al último byte del fichero

fseek(fich, 0, SEEK_END);

La función ftell() de dice donde estás situado, así que esta función llamada después del fseek() anterior te da la longitud del fichero.

Recuerda, antes de empezar a leer debes volver al principio del fichero

fseek(fich, 0, SEEK_SET);

Se bueno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Muchas Gracias Colegas

Publicado por MasterZero (2 intervenciones) el 07/06/2004 17:51:45
Muchas gracias colegas, creo que con lo que me dicen sera suficiente, no he probado el codigo por que estoy en el trabajo, pero llegando a mi casa lo probaré.

Muchas gracias, se van a ir al cielo con todo y zapatos!!

MiniSoftMX les agradece muchisimo!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar