Diferença entre fgets e get

Qual é a diferença entrefgets() egets()?

Estou tentando interromper meu loop quando o usuário pressiona apenas "enter". Está funcionando bem comgets(), mas eu não quero usargets(). Eu tentei comfgets() escanf() mas não tenho os mesmos resultados que comgets(). fgets() quebra o loop qualquer que seja o usuário digitar em texto! Aqui está o meu código:

void enter(void)
{
  int i,

  for(i=top; i<MAX; i++)
    {
      printf(".> Enter name (ENTER to quit): ");
      gets(cat[i].name);

      if(!*cat[i].name)
         break;

      printf(".> Enter Last Name: ");
      scanf("%s",cat[i].lastname);
      printf(".> Enter Phone Number: ");
      scanf("%s",cat[i].phonenum);
      printf(".> Enter e-Mail: ");
      scanf("%s",cat[i].info.mail);
      printf(".> Enter Address: ");
      scanf("%s",cat[i].info.address);
      printf("\n");
    }
  top = i;
}

questionAnswers(4)

yourAnswerToTheQuestion