int ftell(FILE * handle)
Retorna:
La posición actual del puntero de lectura/escritura de un archivo.
Descripción:
Retorna la posición del puntero de lectura/escritura de un archivo, para ello requiere únicamente el handle o identificador de archivo devuelto por la función fopen() al abrirlo.
Para establecer una nueva posición del puntero de un archivo, se debe utilizar la función fseek(). A diferencia de esta última función, ftell() siempre retorna la posición del puntero respecto al inicio del archivo.
Todas las operaciones de lectura o escritura sobre un archivo avanzan automáticamente el puntero del mismo, de forma que todos estos accesos se realicen de forma secuencial (leyendo o escribiendo los datos unos a continuación de otros).
int mitabla[3] = {11,22,33,44}; int midato1; int midato2; int mihandle; MAIN_PROGRAM_CDIV BEGIN_PROGRAM mihandle = fopen("../help.dat","w"); midato1 = ftell(mihandle); // Posición del puntero antes de escribir fwrite(mitabla, 4, 4, mihandle); midato2 = ftell(mihandle); // Posición del puntero tras escribir los datos fclose(mihandle); END_PROGRAM
Este ejemplo escribe los cuatro datos contenidos en mitabla (11,22,33 y 44) en el archivo help.dat.
Tras abrir el archivo con fopen(), se obtiene la posición del puntero y se guarda en midato1 (esta será 0, al inicio del archivo).
Entonces se escriben en el archivo los cuatro valores contenidos en la tabla y se vuelve a obtener la posición del puntero, que ahora se guarda en midato2 (será 16, al final del archivo, tras los cuatro valores escritos).
Finalmente, se cierra el archivo con fclose() antes de finalizar.
Nota: La función filelength() permite averiguar la longitud de un archivo, para ello se debe abrir previamente el mismo.