Se necesita aclaración con respecto a getchar () y newline

Tengo una duda sobre el uso de getchar() para leer una entrada de carácter del usuario.

 char char1, char2; char1 = getchar(); char2 = getchar(); 

Necesito obtener 2 caracteres como entradas del usuario. En este caso, si el usuario ingresa el carácter 'A' seguido de una newline , y luego el carácter 'B' , lo que se almacenará en char2 – ¿será el carácter de nueva línea o el carácter 'B' ?

Lo probé en CodeBlocks en Windows, y char2 realidad almacena el carácter de nueva línea, pero mi intención era almacenar el carácter 'B' .

Solo quiero saber cuál es el comportamiento esperado y si depende del comstackdor. Si es así, ¿qué diferencias existen entre turbo C y mingW?

    Sí, debes consumir nuevas líneas después de cada entrada:

     char1 = getchar(); getchar(); // To consume `\n` char2 = getchar(); getchar(); // To consume `\n` 

    Esto no es dependiente del comstackdor. Esto es cierto para todas las plataformas, ya que habrá retorno de carro al final de cada línea de entrada (aunque el avance de línea real puede variar entre las plataformas).

    Solo quiero saber cuál es el comportamiento esperado, y si depende del comstackdor-dependiente?

    Ese es el comportamiento esperado y no dependiente del comstackdor.

    Puede usar scanf para leer A seguido de nueva línea, luego B seguido de nueva línea. Si quieres mantenerte en getchar() , simplemente da la entrada como AB .

    Puede evitar leer líneas nuevas probándolo explícitamente. En lugar de simplemente usar

     getchar(): 

    puedes usar algo como esto

     while((char1 = getchar()) == '\n'); 

    Si está en Windows, también puede probar con ‘\ r’. Entonces el código cambia un poco.

     while((char1 = getchar()) == '\n' || char1 == '\r'); 

    agregar statement fflush(stdin); en medio de declaraciones. mira esto

     ch1=getchar(); fflush(stdin); ch2=getchar();