fprintf no funciona

Estoy probando el uso de fprintf() y no está funcionando. Cuando escribí el código por primera vez, olvidé agregar \n dentro de fprintf() y funcionó. Sin embargo, cuando agregué \n al inicio de “prueba 1 2”, dejó de funcionar.

 #include  #include  int main () { FILE* f = fopen("test.txt", "r+"); if( f == NULL) return 0; char str[4][10]; for(int a = 0; a <= 3; ++a) { fscanf(f, " %[^\t\n]s", str[a]); printf("%s\n", str[a]); } fprintf(f, "\ntest 1 2\n"); fclose(f); system("pause"); return 0; } 

y mi test.txt contiene (en lugar de \t y \n presioné tab e ingresé en el archivo pero no pude manejarlo aquí)

ab \ tcd \ te \ n fg

Para los archivos abiertos para anexar (aquellos que incluyen un signo “+”), en los que se permiten tanto las operaciones de entrada como las de salida, la secuencia se debe vaciar (fflush) o reposicionar (fseek, fsetpos, rebobinar) entre una operación de escritura seguida de una operación de lectura o una operación de lectura que no alcanzó el final del archivo seguida de una operación de escritura.

Fuente

Así que añade esto:

 fflush(f); 

antes de su fprintf si desea adjuntar al archivo sin eliminar su contenido anterior, o esto:

 rewind(f); 

Si desea sobrescribir el contenido, como señala su comentario.