Cuando tu estás escribiendo en un archivo, por defecto, el sistema lo trata igual que si fuese un buffer de memoria.
Cuando tu escribes en un buffer de memoria, el sistema crea un puntero que apunta a una posición concreta del buffer, de tal forma que cuando inicias operaciones de lectura o escritura, éstas se realizan a partir de esa posición.
Bueno, también puede darse el caso de que se utilicen dos punteros independientes, uno para la lectura y otro para la escritura.
La posición de éstos punteros, normalmente, se determina de forma relativa con respecto al inicio del buffer.
Con esta información, lo que podrías hacer es lo siguiente:
Lee la posición del puntero para saber si has llegado al final del archivo.
Cuando hayas llegado al final posiciona el puntero de nuevo en el principio del archivo y continúa con tu escritura.
Cuando tu escribes en un buffer de memoria, el sistema crea un puntero que apunta a una posición concreta del buffer, de tal forma que cuando inicias operaciones de lectura o escritura, éstas se realizan a partir de esa posición.
Bueno, también puede darse el caso de que se utilicen dos punteros independientes, uno para la lectura y otro para la escritura.
La posición de éstos punteros, normalmente, se determina de forma relativa con respecto al inicio del buffer.
Con esta información, lo que podrías hacer es lo siguiente:
Lee la posición del puntero para saber si has llegado al final del archivo.
Cuando hayas llegado al final posiciona el puntero de nuevo en el principio del archivo y continúa con tu escritura.
Código (c) [Seleccionar]
// Posiciona el puntero al inicio del archivo
fseek( &file, 0, SEEK_SET );
// Obtiene la posición del puntero
long pos = ftell( &file );