UTNianos

Versión completa: Consulta de C++ (Archivos) Algoritmos
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Buenas,
Tengo unas dudas sobre unas sentencias de C++ para el tratamiento de archivos.

1) La funcion fread pide los siguientes parametros: fread(buffer, tamaño, cantidad de componentes, nombre logico archivo)
Un buffer seria un registro del archivo? Por ejemplo si tengo un archivo con 3 structs distintos (a,b,c), si quiero leer solo 1 struct tendria que poner:

fread(&a,sizeof(a),1,Ventas)? Leer el archivo me sirve para recorrerlo?

2) Entiendo que la funcion fseek permite mover el puntero, pero no entiendo bien los parametros:

fseek(nombre logico archivo, direccion que va a mover?, punto de referencia?(SEEK_SET o CUR o END))

Desde ya muchas gracias!
Saludos
Hola!.

Mira, el buffer es una variable auxiliar donde fread va a guardarte lo que levante de tu archivo.
Sobre la pregunta 1), exactamente, en el primer parámetro de fread se pone que querés leer (en este caso un puntero), el tamaño de eso que queres leer, hasta que posición queres leerlo, y de que archivo se habla.

Sobre la segunda, fseek, el segundo parámetro de fseek es cuanto lo queres mover, y el tercero te marca el comienzo, si es SEEK_SET lo hace desde el principio del archivo; si es SEEK_CUR desde donde está el puntero apuntando en este momento y si es SEEK_END desde el final. (Este último no tiene sentido así que no le des mucha bola).
Un ejemplo muy muy burdo.

Imaginate que vos tenes un archivo en donde tenes guardados n números por ejemplo. Y vos queres ir levantando uno por uno. Primero, creas un buffer, es decir, una variable auxiliar que va a servir para guardar tu dato una vez levantado con fread.

int bufferNumero; // Por ejemplo

Ahora, llamamos a fread para levantar el primer numero del archivo.

fread(bufferNumero,sizeof(int),1,miArchivo) // miArchivo es el FILE* asociado a tu archivo

Ahora si volves a hacer una llamada a fread de la misma manera que lo hiciste recién, vas a levantar el numero que le sigue al levantado anteriormente, y lo vas a guardar en buffer.
Muchas gracias Santi y Diego! Necesitaba entenderlo con palabras menos propias jaja.
Saludos
URLs de referencia