logo

fgets() y gets() en lenguaje C

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

fget()

fgets() lee una línea de la secuencia especificada y la almacena en la cadena a la que apunta str. Se detiene cuando se leen (n-1) caracteres, se lee el carácter de nueva línea o se llega al final del archivo, lo que ocurra primero.



Sintaxis

char * fgets  (char * str , int n , FILE * stream );>

Parámetros

    str: puntero a una matriz de caracteres donde se copia la cadena leída. n: número máximo de caracteres que se copiarán en str (incluido el carácter nulo final). *flujo: puntero a un objeto ARCHIVO que identifica un flujo de entrada.

Nota: entrada estándar se puede utilizar como argumento para leer desde la entrada estándar.

Valor de retorno

  • La función fgets() devuelve un puntero a la cadena donde se almacena la entrada.

Características de fgets()

  • Sigue algunos parámetros como la longitud máxima, el búfer y la referencia del dispositivo de entrada.
  • Es seguro usar porque verifica el límite de la matriz.
  • Sigue leyendo hasta que se encuentra un carácter de nueva línea o el límite máximo de la matriz de caracteres.

Ejemplo de fgets()

Digamos que el número máximo 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



¿Cuál es el tamaño de la pantalla de mi computadora?


variable global js





// C program to illustrate fgets()> #include> #define MAX 15> int> main()> {> >// defining buffer> >char> buf[MAX];> >// using fgets to take input from stdin> >fgets>(buf, MAX, stdin);> >printf>(>'string is: %s '>, buf);> >return> 0;> }>

>

cadena dividida java por delimitador
>

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

 Input: Hello and welcome to techcodeview.com Output: string is: Hello and welc>

obtiene()

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

  • No es seguro de usar porque no verifica el límite de la matriz.
  • Se utiliza para leer cadenas del usuario hasta que no se encuentra un carácter de nueva línea.

Sintaxis

char * gets ( char * str  );>

Parámetros

    str: puntero a un bloque de memoria (matriz de caracteres) donde la cadena leída se copia como una cadena C.

Valor de retorno

  • La función devuelve un puntero a la cadena donde se almacena la entrada.

Ejemplo de obtiene()

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

C++


clase de cadena java



hora de la cena versus la hora de la cena
// C program to illustrate> // gets()> #include> #define MAX 15> int> main()> {> >// defining buffer> >char> buf[MAX];> >printf>(>'Enter a string: '>);> >// using gets to take string from stdin> >gets>(buf);> >printf>(>'string is: %s '>, buf);> >return> 0;> }>

>

>

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

 Input : Hello and welcome to techcodeview.com Output : Hello and welcome to techcodeview.com>

Conclusión

Ambas funciones fgets() y gets() se pueden utilizar para leer la entrada de cadena desde la entrada estándar. La principal diferencia entre la función fgets() y la función gets() es que la función fgets() permite al usuario especificar el número máximo de caracteres para leer y también podemos cambiar el flujo de entrada a cualquier archivo en fgets().