Saltar al contenido

Diferencia entre scanf y scanf_s

Presta atención ya que en esta sección vas a encontrar el resultado que buscas.

Solución:

Es una función que pertenece específicamente al compilador de Microsoft.

scanf originalmente solo lee cualquier entrada de la consola que escriba y la asigna a un tipo de variable.

si tienes un array llamó first_name[5] y usas scanf para “Alex”, no hay problema. si tienes lo mismo array y asigna “Alexander”, puedes ver que excede las 5 ranuras que el array contiene, por lo que C aún lo escribirá en la memoria que no pertenece al array y podría o no bloquear el programa, dependiendo de si algo intenta acceder y escribir en esa ranura de memoria que no pertenece a first_name. Aquí es donde scanf_s viene en.

scanf_s tiene un argumento (parámetro) donde puede especificar el tamaño del búfer y, de hecho, controlar el límite de la entrada para que no bloquee todo el edificio.

scanf_s() no está descrito por el Estándar C99 (o anteriores).

Si desea utilizar un compilador que apunta a C99 (o anterior), use scanf().

Para C11 Standard (y eventualmente posteriores) scanf_s() es mucho más difícil de usar que scanf() para mejorar la seguridad contra desbordamientos de búfer.

C11 fscanf_s(): http://port70.net/~nsz/c/c11/n1570.html#K.3.5.3.2

~~~~~~~~~~~~~~~~

Si tiene un compilador C99 con extras que proporciona scanf_s() como una extensión y no le importa perder la portabilidad, consulte la documentación de su compilador.

Aquí tienes las comentarios y puntuaciones

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *