En su momento, tuve una necesidad similar, la solucion que yo implemente, sin meterme con funciones de manejo de caracteres fue:
1.- capturar la letra y almacenarla en un entero
2.- dado que cada letra tiene su equivalente en codigo ASCII, mire la "distancia" entre las mayusculas y las minusculas, asi, una "A" tiene su equivalente en ASCII 65 y una "a" tiene su equivalente 97 es decir, 32 unidades. De este modo, cuando guardo la "A" en un entero, realmente estoy guardando el valor 65.
3.- Para la conversion, simplemente sumo 32 al entero donde guarde la mayuscula y listo, tengo mi letra en minuscula
Podrias refinar lo anterior filtrando que el caracter que leas sea realmente mayuscula, las mayusculas en ASCII estan entre el 65 y el 90
Espero te sirva de algo esto que implemente, un poco a fuerza bruta pero la condicion que yo tuve era cero funciones de manejo de caracteres.
Ehecatl