AD

¿Ya dominas lo básico? Un curso estructurado de C es la vía rápida para dar el salto.

Ver cursos de C en Udemy

Enlace de afiliado. No te cuesta nada extra.

🔧Lecciones de C
Lección 58 / 68

Leer de la entrada estándar

En esta lección pedirás un dato a quien ejecuta el programa.

fgets(buffer, tamaño, stdin) lee una línea. Como incluye el salto de línea final, se quita con strcspn() antes de usar el texto.

El código de ejemplo pide un nombre y saluda con él. En la salida de ejemplo ves también lo que se teclea, porque en una terminal real aparece en pantalla al escribirlo.

Hay que decirlo claro: nunca uses gets(). No comprueba el tamaño del destino, así que una entrada larga desborda el búfer, y eso permite ejecutar código arbitrario. Fue el mecanismo del gusano de Internet de 1988, y por eso gets fue eliminada del estándar en C11. Si la ves en un ejemplo antiguo, ese ejemplo no es de fiar.

scanf("%s", ...) tiene exactamente el mismo problema si no se le indica un ancho máximo. fgets con el tamaño del búfer es la forma correcta, y por eso es la que se usa aquí.

📖 Código de referencia
✍️ Tu código
Escribe tu código y pulsa «Ejecutar»

🧪 Este sitio no puede compilar ni ejecutar C directamente, así que comprueba al instante si lo que escribiste coincide con el código de referencia (la corrección ocurre por completo en tu navegador; no se envía nada a ningún servidor).

🔗 El mismo tema en otros lenguajes

Mira cómo se escribe lo mismo en otro lenguaje.

Espacio publicitario (banner)
Espacio publicitario (en el artículo)