Red de conocimientos sobre prescripción popular - Enciclopedia de Medicina Tradicional China - En lenguaje C, ¿por qué get no se detiene cuando encuentra un espacio, pero scanf se detiene cuando encuentra un espacio? ¡Por favor ilumíname! ¡Muchas gracias!

En lenguaje C, ¿por qué get no se detiene cuando encuentra un espacio, pero scanf se detiene cuando encuentra un espacio? ¡Por favor ilumíname! ¡Muchas gracias!

Al ingresar en el teclado, el espacio significa nulo, lo que significa que el valor antes del espacio se asigna a la variable al final de la entrada.

Debido a que el primero que se recibe es de tipo carácter, 123 espacios solo se pueden recibir como '1' 23, que todavía está en el buffer. En este punto, la variable I solo necesita recibir los datos plásticos en 10... entonces se asigna 23 a i 23, seguido de un espacio, y se detiene.

Después de eso, S recibe la cadena 456 del buffer, seguida de un espacio para recibir la parada, por lo que la respuesta final es 1, 23, 456.

Si el tercer scanf se cambia a scanf ("%[\n]", s, la respuesta debe ser el tercero (sin coma entre 456 y 789)

% [ \n] acepta todos los caracteres desde carácter hasta \n carácter. Inicialmente, scanf no acepta espacios. Cuando se encuentra un espacio, se tratará como nulo para dejar de aceptar caracteres posteriores, pero recibirá un espacio después de la entrada de control. De hecho, también puedes usar la función gets para recibirlo, y get también recibe espacios.