Si se abre un archivo con el siguiente comando:apertura de un archivo en el modo de 'A +'
FILE *f1=fopen("test.dat","a+");
La página del manual dice lo siguiente:
a +
abierto para la lectura y añadiendo (escribiendo al final del archivo). El archivo se crea si no existe. La posición inicial del archivo para la lectura se encuentra al principio del archivo, pero la salida es siempre adjuntada al final del archivo.
Lo mismo sucede con f1
han compensado 2 punteros separados, uno para leer & otro para escribir?
También puede ser útil saber que esto se implementa típicamente en términos de 'abierto' con el indicador O_APPEND en sistemas POSIX: http://pubs.opengroup.org/onlinepubs/7908799/xsh/open.html –
In case fseek no se llama antes de leer, se imprimen muchos espacios en el código siguiente. No esperaba nada para imprimir en la pantalla. Pero, ¿por qué se imprimen espacios? Eso significa que EOF no se encuentra correctamente. Si descomiento fseek a continuación, los datos se imprimen correctamente en la pantalla. 'int main() { ARCHIVO * fp1; char ch; fp1 = fopen ("m.txt", "a +"); fputs ("datos anexados", fp1); // fseek (fp1,0, SEEK_SET); while ((ch = getc (fp1))!! = EOF) { putc (ch, stdout); } fclose (fp1); return 0; } ' –