Помимо того, что было упомянуто с conio.h и т. П., Еще одна проблема с вашим исходным кодом заключается в том, что вы тестируете операции с числами типа int, например
if (c==27)
Учитывая, что в вашем вводе ожидаются символы, вы должны использовать тип char (или integer) (игнорируя возможные коды клавиатуры UTF-16, что, учитывая, что вы работаете в Windows, вероятно).
Для кода, независимого от платформы, вы, возможно, захотите что-то вроде этого:
#include <iostream>
int function2();
int c;
int main(){
do {
cin >> c;
if (c == 27) {
function2();
}
cout << "How old are you?" << endl;
} while (c != 27);
return 0;
}
int function2() {
cout << "!!!END!!!" << endl;
return 0;
}
Конечно, есть проблемы с этим подходом - для правильной обработки событий вам нужно использовать функции GetKeyState из WinAPI.