Ciao a tutti!

mi scuso se posto una domanda già fatta, ma pur leggendo gli altri topic non riesco a trovare soluzione!

Sto scrivendo un programma in C per l'università: è una specie di quiz, il codice è il seguente

codice:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

#define MAX_TITLE_LEN 40
#define MAX_Q_LEN 300
#define MAX_A_LEN 30
#define DEBUG

int punteggio = 0;

void stampa_domande (char[], FILE*, FILE*);
void acquisisci_risposta (FILE*);
void score (void);

int main () {

	int i;
	char titolo[MAX_TITLE_LEN + 1], password[MAX_TITLE_LEN + 1];
	char percorso_d[MAX_TITLE_LEN + 1], percorso_r[MAX_TITLE_LEN + 1], percorso_p[MAX_TITLE_LEN + 1];
	char domanda[MAX_Q_LEN + 1];
	char scelta;
	FILE *d, *r, *p;

		printf ("Benvenuto!\n");
		printf ("Inserisci il titolo del film di cui vuoi le domande: ");
		gets (titolo);

		do {

		for (i = 0; titolo[i] != '\0'; i++) {

		   titolo[i] = tolower (titolo[i]);
		   if (titolo[i] == ' ')
		      titolo[i] = '-';
		}

		strcpy (percorso_d, titolo);
		strcpy (percorso_r, titolo);
		strcpy (percorso_p, titolo);
		strcat (percorso_d,"/domande.txt");
		strcat (percorso_r, "/risposte.txt");
		strcat (percorso_p, "/password.txt");

		d = fopen (percorso_d, "r");
		r = fopen (percorso_r, "r");

		if (d == NULL) {
		   printf ("Non ho trovato il file\n");
		   return 0;
		}
		else
		   printf ("%s: ho aperto i file.\n", titolo);

		while(fgets (domanda, MAX_Q_LEN, d) != NULL) 
		   stampa_domande (domanda, d, r);

		printf ("Hai totalizzato %d punti.\n", punteggio);

		if (punteggio == 40 || punteggio > 40) {
		   p = fopen (percorso_p, "r");
		   fscanf (p, "%s", password);
		   fclose (p);
		   printf ("Complimenti!! Livello superato!\nLa Password per aprire l'archivio corrispondente a %s è %s\n", titolo, password);
		}
		else {
		   printf ("Peccato! Livello fallito!\n");
		   fclose (d);
		}

		printf ("Un'altra partita? (y, n) ");
		scanf ("%c", &scelta);

		if (scelta == 'y') {
		   printf ("Inserisci il titolo del film di cui vuoi le domande: ");
		   gets (titolo);

		   #if defined (DEBUG)
		      printf ("new_title: %s\n", titolo);
		   #endif
	   	}

		} while (scelta != 'n');

		return 0;

}

void stampa_domande (char domanda[], FILE *d, FILE *r) {

		printf ("%s ", domanda);
		acquisisci_risposta (r);

		return;
}

void acquisisci_risposta (FILE *r) {

	char risp_es[MAX_A_LEN + 1], risposta[MAX_A_LEN + 1];
	int check;

	gets (risposta);
	fscanf (r, "%s", risp_es);

	check = strcmp (risp_es, risposta);

	if (check == 0) {
	   punteggio += 10;
	   return;
	}
	else
	   return;
}
in pratica all'inizio del runtime l'utente specifica il nome di un film (di cui sono state caricate domande e risposte), il programma fa delle domande e l'utente risponde con risposte aperte oppure vero/falso.

tutto ok, se non fosse che quando arrivo per la prima volta all'inizio del main e mi chiede "un'altra partita?" io faccio "y" e lui, saltando completamente la gets (titolo) in fondo termina il programma perchè non mi fa dire su quale altro film voglio essere interrogato.

Cosa devo fare???