Salve a tutti. Ho un problema. Quando entro nella procedura Write(), il primo gets() del ciclo viene ignorato... come è possibile?

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

void Write ()
{
     FILE *f;
     f =fopen ("numbers.txt", "w");
     
     char n[16];
     while (1)
     {
           printf ("insert a number ('e' for exit): ");
           gets (n);
           
           if (!strcmp (n, "e"))
              break;
           
           fprintf (f, "%s\n", n);
     }
     
     fclose(f);
     printf ("----------\n\n");
}

void Read()
{
     FILE *f;
     f =fopen ("numbers.txt", "r");
     
     int x;
     fscanf (f, "%d", &x);
     while (!feof (f))
     {           
           printf ("%d * 2 = %d\n", x, x * 2);
           fscanf (f, "%d", &x);
     }
     
     fclose (f);
     printf ("----------\n\n");
}

int main ()
{
    int option;
    while (1)
    {
          printf ("1. Write on file\n");
          printf ("2. Read from file\n");
          printf ("3. Exit\n---> ");
          scanf ("%d", &option);
          
          if (option == 1)
               Write ();
          else if (option == 2)
               Read ();
          else if (option == 3)
               break;
    }
    
    return 0;
}