Red de conocimiento informático - Conocimiento informático - Ayúdame a echar un vistazo a este código de lenguaje C. No hay ningún problema en el primer bucle. En el segundo bucle, cuando se me solicita que ingrese a JDM, salté directamente.

Ayúdame a echar un vistazo a este código de lenguaje C. No hay ningún problema en el primer bucle. En el segundo bucle, cuando se me solicita que ingrese a JDM, salté directamente.

¿Qué significa "simplemente saltar"? ¿Dónde saltó? Puede ser que la memoria se haya desbordado. "gets(man[i].JDM)" en realidad trata a "man[i].JDM" como una dirección y almacena el resultado de la lectura en esta dirección. Si es pequeño, se desbordará fácilmente. Según su programa a continuación, el método de escritura correcto debe ser get(&man[i].JDM; de hecho, cuando define int JDM, tiene solo 64 bits de ancho como máximo). La función gets no determinará el límite superior. Las cadenas Enter siguen siendo propensas a desbordarse.