Tomando entrada de string con espacio en C (4 métodos diferentes)

Podemos tomar la entrada de string en C usando scanf(“%s”, str) . Pero acepta strings solo hasta que encuentra el primer espacio. 
Hay 4 métodos por los cuales el programa C acepta una string con espacio en forma de entrada del usuario.
Tengamos una array de caracteres (string) llamada str[] . Entonces, hemos declarado una variable como char str[20] .

Método 1: Uso de la sintaxis: char * gets (char *str)

C

#include <stdio.h>
int main()
{
   char str[20];
   gets(str);
   printf("%s", str);
   return 0;
}

Nota: gets() ha sido eliminado de c11. Por lo tanto, podría darte una advertencia cuando se implemente. 
Vemos aquí que no se preocupa por el tamaño de la array. Por lo tanto, existe la posibilidad de un desbordamiento de búfer .

Método 2: para superar la limitación anterior, podemos usar fgets como:
Sintaxis: char *fgets(char *str, int size, FILE *stream)
Ejemplo: fgets(str, 20, stdin); como aquí, 20 es MAX_LIMIT según la declaración.

C

#include <stdio.h>
#define MAX_LIMIT 20
int main()
{
   char str[MAX_LIMIT];
   fgets(str, MAX_LIMIT, stdin);
   printf("%s", str);
 
   return 0;
}

Método 3: Usar %[^\n]%*c dentro de scanf
Ejemplo: scanf(“%[^\n]%*c”, str);

C

#include <stdio.h>
int main()
{
   char str[20];
   scanf("%[^\n]%*c", str);
   printf("%s", str);
 
   return 0;
}

Explicación: aquí, [] es el carácter del conjunto de escaneo . ^\n le dice que tome la entrada hasta que no se encuentre la nueva línea. Luego, con este %*c , lee el carácter de nueva línea y aquí used * indica que este carácter de nueva línea se descarta.
Este artículo es una contribución de Aditya Kumar . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

Método 4:   Usando %[^\n]s dentro de scanf.

Ejemplo:  scanf(“%[^\n]s”, str); 

C

#include <stdio.h>
 
int main() {
    char str[100];
      scanf("%[^\n]s",str);
      printf("%s",str);
    return 0;
}

Explicación: aquí, [] es el carácter del conjunto de escaneo. ^\n le dice que tome la entrada hasta que no se encuentre la nueva línea. Aquí usamos ^ (XOR -Operator) que da verdadero hasta que ambos caracteres son diferentes. Una vez que el carácter es igual a Nueva línea (‘\n’), ^ (Operador XOR) da falso para leer la string. Así que usamos «%[^\n]s» en lugar de «%s». Entonces, para obtener una línea de entrada con espacio, podemos usar scanf(“%[^\n]s”,str);

Este artículo es una contribución de Mukesh patel. Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks. Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

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