Estoy tratando de probar esta tabla de búsqueda simple, pero no puedo entender por qué tanto scanf como getchar agregan el carácter de nueva línea ( '\n' ) a la entrada:
const int arr[10] = {1,0,5,7,6,4,8,2,9,3}; char digit; printf("enter digits please\n"); digit = getchar(); while ((digit>='0') && (digit<='9')) { printf("%d --> %d\n",digit,arr[digit-'0']); digit = getchar(); } printf("bye bye!"); cuando se ejecuta este código, tanto con printf como con getchar() , el ciclo while se ejecuta solo una vez, ya que el carácter de nueva línea ( '\n' ) también se almacena en el digit de la variable char, y no puedo entender por qué.
Cuando presiona la tecla Intro , agrega una nueva línea a la entrada. Si quieres saltarte eso, tienes que saltarte eso. Una forma sencilla es usar scanf con un espacio en la cadena de formato, que omite todos los espacios en blanco. Usar:
scanf(" %c", &digit); en lugar de digit = getchar(); en los dos lugares que haces eso.