Escanear múltiples números sin escanear entrar en C

Estoy intentando escanear 4 números sin pulsar Intro (quiero que finalice el escaneo cuando vea que hay 4 números). Estoy usando el método:

printf("Enter 4 Numbers(with space):\n"); scanf("%d %d %d %d" , &guess1 , &guess2 , &guess3 , &guess4); 

pero requiere espacios entre los números y presionando enter al final. Entonces, ¿cómo hago para recibir, por ejemplo: 1234 (num1 = 1, num2 = 2 y así sucesivamente) y finalizo la recepción sin presionar enter.

Para ingresar en "1234" y escanear como 4 dígitos, use un "1 ” `para limitar el ancho del texto de la entrada de datos para cada entero.

 if (scanf("%1d%1d%1d%1d" , &guess1 , &guess2 , &guess3 , &guess4))!=4) Handle_Input_Error(); else Success(); 

stdin es generalmente la línea de búfer. Por lo tanto, para leer los datos sin esperar a la entrada, la solución es específica de la plataforma.

Consulte ¿Cómo puedo evitar que scanf () espere por siempre un carácter de entrada?

No puede hacerlo de la manera que imaginó, porque su proceso no recibe nada antes de presionar enter. Así es como funciona el búfer. Si realmente desea hacer esto (y no ha dado una razón), puede considerar una biblioteca de IU de consola específica del sistema operativo como ncurses para Linux, o un equivalente para DOS, que le permitirá capturar cada pulsación de tecla. Entonces tendrías que ensamblar números recolectando dígitos individuales en él. Sin embargo, no es fácil y transformaría todo tu progtwig en algo que quizás no quieras. ¿Nos da una razón por la que quiere hacer esto como lo describió?

Es simple, simplemente elimine los espacios entre% d en scanf () yu puede ingresar números como 1 2 3 4 y luego presione enter, los números se almacenarán en guess1, guess2, guess3 y guess4 respectivamente. printf (“Ingrese 4 números (con espacio): \ n”);

 scanf("%d%d%d%d" , &guess1 , &guess2 , &guess3 , &guess4); 

así que solo tienes que aprender Technic para leer números separados con espacios.