Diferencia entre scanf() y gets() en C

escanear()

  • Se utiliza para leer la entrada (carácter, string, datos numéricos) de la entrada estándar (teclado).
  • Se utiliza para leer la entrada hasta que encuentra un espacio en blanco, una nueva línea o un final de archivo (EOF).

Por ejemplo, vea el siguiente código: 

C

// C program to see how scanf()
// stops reading input after whitespaces
 
#include <stdio.h>
int main()
{
    char str[20];
    printf("enter something\n");
    scanf("%s", str);
    printf("you entered: %s\n", str);
 
    return 0;
}

Aquí la entrada será proporcionada por el usuario y la salida será la siguiente:

Input: Geeks for Geeks
Output: Geeks

Input: Computer science
Output: Computer

obtiene

  • Se utiliza para leer la entrada desde la entrada estándar (teclado).
  • Se utiliza para leer la entrada hasta que encuentra una nueva línea o Fin de archivo (EOF).

C

// C program to show how gets()
// takes whitespace as a string.
 
#include <stdio.h>
int main()
{
    char str[20];
    printf("enter something\n");
    gets(str);
    printf("you entered : %s\n", str);
    return 0;
}

Aquí la entrada será proporcionada por el usuario de la siguiente manera

Input: Geeks for Geeks
Output: Geeks for Geeks

Input: Computer science
Output: Computer science

La principal diferencia entre ellos es:

  1. scanf() lee la entrada hasta que encuentra un espacio en blanco, una nueva línea o el final del archivo (EOF), mientras que gets() lee la entrada hasta que encuentra una nueva línea o el final del archivo (EOF), gets() no deja de leer la entrada cuando encuentra un espacio en blanco. toma espacios en blanco como una string.
  2. scanf puede leer múltiples valores de diferentes tipos de datos, mientras que gets() solo obtendrá datos de strings de caracteres.

La diferencia se puede mostrar en forma tabular de la siguiente manera:

escanear() obtiene()
cuando se usa scanf() para leer la entrada de string, deja de leer cuando encuentra un espacio en blanco, una nueva línea o el final del archivo cuando se usa gets() para leer la entrada, deja de leer la entrada cuando encuentra una nueva línea o el final del archivo. No deja de leer la entrada al encontrar espacios en blanco, ya que considera los espacios en blanco como una string.
Se utiliza para leer la entrada de cualquier tipo de datos. Se utiliza sólo para la entrada de strings.

Su sintaxis es -:

scanf(const char *formato, …) 

Su sintaxis es -:

char *obtiene(char *str)

Es rápido tomar entrada. Toma un parámetro que es el puntero a una array de caracteres
Los especificadores de formato se utilizan dentro de scanf para recibir entradas. Su valor de retorno es str en caso de éxito, sino NULL.

Cómo leer la oración completa del usuario usando scanf()

En realidad, podemos usar scanf() para leer la string completa. Por ejemplo, podemos usar %[^\n]s dentro de scanf() para leer la string completa. 

C

// C program to show how to read
// entire string using scanf()
 
#include <stdio.h>
 
int main()
{
 
    char str[20];
    printf("Enter something\n");
 
    // Here \n indicates that take the input
    // until newline is encountered
    scanf("%[^\n]s", str);
    printf("%s", str);
    return 0;
}

El código anterior lee la string hasta que encuentra una nueva línea. Ejemplos:

Input: Geeks for Geeks
Output: Geeks for Geeks

Input: Computer science
Output: Computer science

Publicación traducida automáticamente

Artículo escrito por Vaibhav_Arora 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 *