Первое.
Не стоит определять функции внутри main() - определения функций следует вынести выше main().
scanf("%d", &password);
Что будет, если:
- я введу не число?
- я ничего не введу (пустую строку)?
- я введу строку типа "123 123"?
if (intype == 2)
{
break;
directory = 2;
}
directory никогда не получит значения 2, потому что break - команда немедленного выхода из цикла.
Скорее всего из-за этого и бесконечный цикл.