fgets() y gets() en lenguaje C

Para leer un valor de string con espacios, podemos usar gets() o fgets() en el lenguaje de programación C. Aquí veremos cuál es la diferencia entre gets() y fgets().

fgets()

Lee una línea del flujo especificado y la almacena en la string a la que apunta str. Se detiene cuando se leen (n-1) caracteres, se lee el carácter de nueva línea o se alcanza el final del archivo, lo que suceda primero.
Sintaxis:

char *fgets(char *str, int n, FILE *stream)
str : Pointer to an array of chars where the string read is copied.
n : Maximum number of characters to be copied into str 
(including the terminating null-character).
*stream : Pointer to a FILE object that identifies an input stream.
stdin can be used as argument to read from the standard input.

returns : the function returns str
  • Sigue algunos parámetros como la longitud máxima, el búfer, la referencia del dispositivo de entrada.
  • Es seguro de usar porque verifica el límite de la array.
  • Continúa leyendo hasta que se encuentra un nuevo carácter de línea o el límite máximo de la array de caracteres.

Ejemplo: digamos que la cantidad máxima de caracteres es 15 y la longitud de entrada es mayor que 15, pero aún así fgets() leerá solo 15 caracteres y los imprimirá.

// C program to illustrate
// fgets()
#include <stdio.h>
#define MAX 15
int main()
{
    char buf[MAX];
    fgets(buf, MAX, stdin);
    printf("string is: %s\n", buf);
  
    return 0;
}

Dado que fgets() lee la entrada del usuario, debemos proporcionar la entrada durante el tiempo de ejecución.

Input:
Hello and welcome to GeeksforGeeks

Output:
Hello and welc

obtiene()

Lee caracteres de la entrada estándar (stdin) y los almacena como una string C en str hasta que se alcanza un carácter de nueva línea o el final del archivo.
Sintaxis:

char * gets ( char * str );
str :Pointer to a block of memory (array of char) 
where the string read is copied as a C string.
returns : the function returns str
 
  • No es seguro de usar porque no verifica el límite de la array.
  • Se utiliza para leer la string del usuario hasta que no se encuentra el carácter de nueva línea.

Ejemplo: supongamos que tenemos una array de caracteres de 15 caracteres y la entrada es mayor que 15 caracteres, gets() leerá todos estos caracteres y los almacenará en variables. Dado que gets() no comprueba el límite máximo de caracteres de entrada, por lo que en en cualquier momento, el compilador puede devolver un error de desbordamiento del búfer.

// C program to illustrate
// gets()
#include <stdio.h>
#define MAX 15
  
int main()
{
    char buf[MAX];
  
    printf("Enter a string: ");
    gets(buf);
    printf("string is: %s\n", buf);
  
    return 0;
}

Dado que gets() lee la entrada del usuario, debemos proporcionar la entrada durante el tiempo de ejecución.

Input:
Hello and welcome to GeeksforGeeks

Output:
Hello and welcome to GeeksforGeeks

Publicación traducida automáticamente

Artículo escrito por Kanchan_Ray y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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