Algunas respuestas se están complicando mucho. Yo hace poco terminé mi ahorcado y esto es lo que hice (funciona perfectamente):
Declarar una array auxiliar de longitud = strlen(palabraelegida). en el que todos sus valores fueran '_' (los llenas con un for).
Pides el caracter con getchar(), y recorres la palabra con un bucle for en el que comparas el caracter con cada posición de la palabra, si está, sustituyes en la posición del auxiliar el '_' por el caracter.
Repite la petición de caracteres con un do while, con las condiciones de que lo haga hasta que strcmp(auxiliar,palabra) esa == 0 y que los intentos restantes sean >0.
Declarar una array auxiliar de longitud = strlen(palabraelegida). en el que todos sus valores fueran '_' (los llenas con un for).
Pides el caracter con getchar(), y recorres la palabra con un bucle for en el que comparas el caracter con cada posición de la palabra, si está, sustituyes en la posición del auxiliar el '_' por el caracter.
Repite la petición de caracteres con un do while, con las condiciones de que lo haga hasta que strcmp(auxiliar,palabra) esa == 0 y que los intentos restantes sean >0.