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.

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

Responder a