Encontré el error, aunque no acabo de comprenderlo del todo.
Código:
void pinta_array(int *posicion){
int i;
for(i=0; i<51; i++)printf("%d-",posicion[i]);
printf("%d\n",posicion[i+1]);
}
Cuando sale del for i no deberia ser igual a 50 ? y luego en la última línea pintar el posicion[51] ?