Si lo hago de esa forma no me pide por pantalla el caracter para sustituir.
Código (c) [Seleccionar]
printf("Escribe una frase: "); //obtiene la cadena
fgets(cadena, sizeof(cadena), stdin);
printf("\nCaracter para cambiar: "); //obtener caracter a buscar para remplazar
sscanf(cadena, "%d",&cambiar);
printf("\nCaracter sustituto: "); //caracter sustituto
scanf("%c",&sustituir);