Diferencia entre gets () y fgets () en lenguaje de programación C

Aprender: Diferencia entre gets () y fgets () en C lenguaje de programación con ejemplos.

Para leer un valor de cadena con espacios, podemos utilizar cualquiera gets () o fgets () en el lenguaje de programación C. Aquí , vamos a aprender lo que es la diferencia entre gets () y fgets () con ejemplos?

gets ()

gets () se usa para leer cadena desde el dispositivo de entrada estándar hasta que no se encontró carácter de nueva línea, el uso de gets () puede arriesgada, ya que no compruebe la matriz ligada.

Por ejemplo: si tiene una matriz de caracteres con 20 caracteres y la entrada es superior a 20 caracteres, gets () va a leer todos los caracteres y almacenarlos en la variable. Desde , gets () no comprueba el límite máximo de caracteres de entrada, por lo que cualquier tiempo compilador puede return de error de desbordamiento de búfer .

Considere el ejemplo:

En este caso, el número máximo de caracteres son 20 y la longitud de entrada es mayor que 20, gets () va a leer y almacenar todos los caracteres (lo que está mal y puede producirse desbordamiento de búfer en cualquier momento) .

#include <stdio.h>
#define MAX 20
int main()
{
char buf[MAX];
printf("Enter a string: ");
gets(buf);
printf("string is: %sn",buf);
return 0;
}

salida

Enter a string: Hi there, how are you?
string is: Hi there, how are you?

fgets ()

fgets () se usa para leer cadena hasta carácter de nueva línea o límite máximo de la matriz de caracteres, el uso de fgets () es seguro, ya que los controles la matriz ligada.

fgets () tiene los siguientes parámetros: tampón , longitud máxima , y entrada de referencia de dispositivo .

Considere el ejemplo:

Aquí, el número máximo de caracteres son 20 y la longitud de entrada es mayor que 20, fgets () va a leer y almacenar sólo 20 caracteres.

#include <stdio.h>
#define MAX 20
int main()
{
char buf[MAX];
printf("Enter a string: ");
fgets(buf,MAX,stdin);
printf("string is: %sn",buf);
return 0;
}

salida

Enter a string: Hi there, how are you?
string is: Hi there, how are y


Deja un comentario

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