Corretto ma

1) non devi usare la cout in quel modo (perchè la while non valuterà quello che è restituito dalla fread)

2) devi resettare il puntatore (con una fseek) quando passi da scrittura a lettura

Ti consiglio infine, di usare le costanti per la fseek

Quindi, il ciclo diventerà

codice:
while(fread(&persona, sizeof(record), 1, fp))
{
    fseek(fp, -sizeof(record), SEEK_CUR);
    persona.prova=0;
    fwrite(&persona, sizeof(record), 1, fp);
    fseek(fp, 0, SEEK_CUR);
}