Gracias ferdy, pense en usar wb, pero si hago eso, me cargo el archivo prestamos.dat, y borra los datos que ahi hubiese

Edito:
Leo:
r+ or rb+ or r+b
Open file for update (reading and writing).
No sabia que con la opción rb+ también podria escribir en el archivo, voy a probar asi, muchas gracias!
EDITO: Queria haber actualizado el ultimo mensaje, pero se ve que no me deja

El caso es que creo que tengo un problema con el uso de ficheros, que no acabo de entender como van, he hecho un mini programa que pida el nombre y la edad de 3 personas diferentes, y luego, si uno de los nombres es Javi, cambia su edad a 99 y recorre el fichero para mostrar el nuevo dato.
Codigo:
typedef struct {
int edad;
char nombre[20];
} t_ficha;
int main(){
t_ficha persona;
FILE *prueba;
int i;
if((prueba=fopen("prueba.dat", "wb"))==NULL)
printf("\nError al abrir el archivo");
/** Introducir los datos en el archivo. */
for(i=0; i<3; i++){
printf("\nDame el nombre: ");
gets(persona.nombre);
fflush(stdin);
printf("\nDame la edad: ");
scanf("%d", &persona.edad);
fflush(stdin);
fwrite(&persona, sizeof(persona), 1, prueba);
}
fclose(prueba);
/* Actualizacion de los datos */
if((prueba=fopen("prueba.dat", "rb+"))==NULL)
printf("\nError al abrir el archivo");
fread(&persona, sizeof(persona), 1, prueba);
while(feof(prueba)==0){
if(strcmp(persona.nombre, "Javi")==0){
persona.edad=99;
printf("\nEntro por la condicion");
fwrite(&persona, sizeof(persona), 1, prueba);
}
fread(&persona, sizeof(persona), 1, prueba);
}
fclose(prueba);
/* Lectura de los nuevos datos */
if((prueba=fopen("prueba.dat", "rb"))==NULL)
printf("\nError al abrir el archivo");
fread(&persona, sizeof(persona), 1, prueba);
while(feof(prueba)==0){
if(strcmp(persona.nombre, "Javi")==0){
printf("La nueva edad es: %d", persona.edad);
}
fread(&persona, sizeof(persona), 1, prueba);
}
fclose(prueba);
return 0;
}
Y al hacerlo, me pasa como con mi codigo, que me sigue mostrando la edad que introduje por teclado y no 99, y si que entra por la condicion, porque he escrito un printf y se ejecuta. Algo hay mal y por mas que miro no encuentro el fallo

:(
Mil gracias!