Gracias, estuve probando con otros ejemplos y se da lo que comentas, abro un
archivo vacio, me posiciono en la posicion 100, con un fseek, obtengo la
posicion con ftell y me da 100, hasta ahi es como se espera que funcione y
sabia que asi funcionaba, ahora cuando yo quiero leer 4 bytes de esa
posicion en un buffer de 4 bytes la funcion fread me devuelve o retorna que
leyo cero bytes, y de hecho es lo mismo que comparar con EOF de que llegue
al final del archivo...

Tambien probe que posicionandome en una posicion 100 por ejemplo de un
archivo vacio recien abierto y escribir, de hecho escribe exitosamente pero
a partir de la posicion de final del archivo, lo cual era de esperarse.

Saludos
Pablo

El día 20/03/08, Leandro Fernández <[EMAIL PROTECTED]> escribió:
>
> Es correcto, fseek() se puede posicionar en una parte del archivo que no
> existe. Por ejemlpo en la posición 100 de un archivo de 20 bytes. Luego, si
> leés te dará fin de archivo y si escribís el archivo se "estira".
>
> Para posicionarte al final del archivo hacés fseek(file, 0, SEEK_END) y
> con eso estás.
> do
> Si ya hiciste el fseek() y querés saber si estás al final tenés que hacer
> fread().
>
>
> On 20/03/2008, Pablo Martín Viva <[EMAIL PROTECTED]> wrote:
>
> > Perdon se envio mal el mail anterior, el codigo es el siguiente:
> >
> > #include "stdlib.h"
> > #include "stdio.h"
> >
> > int main(int argc, char** argv) {
> >     FILE* file;
> >     int statusCode;
> >
> >     file = fopen("archivo.dat", "a+b");
> >     if (file) {
> >        statusCode = fseek(file, 100, SEEK_SET);
> >
> >        printf("El status code de fseek devolvio %d", statusCode);
> >     }
> >     return EXIT_SUCCESS;
> > }
> >
> > Esto efectivamente me imprime El status code de fseek devolvio 0
> >
> >
> >
> > Ademas me cuesta mucho ver cuando estoy posicionado en la primera
> > posicion del archivo, imagino que comparando el resultado de ftell con 0 y
> > si es igual estoy en la primera posicion.
> >
> > Ademas hay alguna funcion o forma de saber si estoy parado en el final
> > del archivo sin tener que leer datos?
> > Se que existe una funcion llamada feof() que toma un file descriptor o
> > file pointer y me dice si alcance al final el archivo pero se setea en cada
> > lectura o escritura, me gustaria saber si luego de hacer un fseek hay forma
> > de saber si alcance al final del archivo.
> >
> > Gracias
> > Pablo
> >
> > El día 20/03/08, Pablo Martín Viva <[EMAIL PROTECTED]> escribió:
> > >
> > > Buenas tardes, tenia algunas consultas sobre manejo de archivos en C y
> > > queria ver si alguno de ustedes puede aclararme un poco mas la 
> > > situacion...
> > >
> > > Segun tengo entendido hay varias funciones para manejo de archivos en
> > > C y cada una con una funcionalidad diferente por ejemplo fopen, fclose,
> > > fread, fwrite, ftell, fseek...
> > > Lo primero que no me termina de quedar claro es segun la definicion de
> > > funciones como ftell y fseek ambas devuelven un valor distinto de cero en
> > > caso de no ser exitosas, pero cuando especificamente sucede esto????
> > >
> > > Tomemos un caso particular, abro un archivo nuevo y vacio en modo
> > > lectura / escritura, ejecuto un fseek para posicionarme en una posicion 
> > > 100
> > > bytes desde el comienzo del archivo por ejemplo, teniendo en cuenta que el
> > > archivo esta vacio sumo que deberia darme algun error y la funcion 
> > > devolver
> > > un valor distinto de cero pero esto no es asi, segun el siguiente ejemplo
> > > que probe compilando y ejecutandose...
> > >
> > > #include "stdlib.h"
> > > #include "stdio.h"
> > >
> > > int main(int argc, char** argv) {
> > >
> > >
> >
> > _______________________________________________
> > Lista de correo Programacion.
> > [email protected]
> > http://listas.fi.uba.ar/mailman/listinfo/programacion
> >
> >
>
>
> --
> _Leo_
> [http://www.mininotebooks.com.ar - http://blog.drk.com.ar]
> _______________________________________________
> Lista de correo Programacion.
> [email protected]
> http://listas.fi.uba.ar/mailman/listinfo/programacion
>
>
_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion

Responder a