Getchar is okay, but it's going to leave stuff in the input buffer (a newline, at the very least). That will still be there to plague you on any subsequent input requests. You will have to learn how to get rid of superfluous junk like that.

Personally, I would use fgets to get the entire line. If I were feeling nice, I'd then just take the first character and see if it matched any of the characters I had specified as representatives of a base. If you're specifying that the base be expressed as a number, then if you use getchar you are going to have to collect then convert the input. If you use fgets, then you can use sscanf to collect and convert the input. If your master is telling you not to use any form of scanf, then he/she is telling you that you need to learn how to make your own numerical conversions.

No matter what you use to collect input, always test to see if the input succeeded. Users do not react as you think, they react according to whether they're inattentive, lazy, malicious, or just asleep with their forehead on the keyboard. Failing to test input is the sign of an uninformed person, or a schlock. You are now informed, so there's only one conclusion to draw if you fail to test it hereafter.

The std namespace is a C++ thangy. Don't try to use it in a C program.