Buenas,
Perdón por haber tardado tanto en responder. Hemos estado liados con examenes parciales de cálculo y no he tenido tiempo.
He probado la condición del while que me has comentado y te digo lo que he puesto y que me sucede:
do {
printf("%s",menu);
opcion=toupper(getchar());
while (getchar() != 'n');
switch (opcion) {
case 'A':
nueva_alta(BIBLIOTECA);
break;
Resulta que al principio entra bien cuando marco la opción A, por ejemplo. Pero luego cuando vuelvo al menú y escojo otra opción, (la D por ejemplo) me vuelve a salir el menu y tengo que volver a pulsar la D para que me la coja y entre en la opcion D.
Salu2
PD: Como ves, he cambiado también el scanf ("%c",&opcion) por el toupper getchar para que me pase a mayúsculas la letra introducida.[code=c]