fede, deberías mostrarnos la declaración de la estructura paciente y el formato del archivo pacientes.dat, para poder analizar porqué tienes ese error de memoria, que seguramente se debe a un puntero mal utilizado.
Esta parte del código puede resultar problemática por poder provocar un desbordamiento de buffer:
Código:
strcpy(z,p.apellido);
srcpy(y,p.nombre);
strcpy(x,r.c_str());
strcat(z,x);
strcat (z,y);
Saludos.