Obtener la entrada del usuario en C
-
Utiliza la función
scanf
para obtener la entrada del usuario según un formato determinado en C -
Usar
scanf
para analizar la entrada del usuario basándose en el formato dado
Este artículo demostrará múltiples métodos sobre cómo obtener la entrada del usuario en C.
Utiliza la función scanf
para obtener la entrada del usuario según un formato determinado en C
La función scanf
procesa la entrada del usuario como texto formateado y almacena el valor de la cadena convertida en el puntero dado. El prototipo de la función es similar a la familia de funciones printf
. Toma el argumento de la cadena de formato como una directiva sobre cómo procesar los caracteres de entrada y luego un número variable de argumentos de puntero para almacenar los valores correspondientes.
Tenga en cuenta que el especificador %[^\n]
indica a scanf
que procese todos los caracteres antes del primer carácter de nueva línea como una cadena y los almacene en el búfer char*
. El búfer de destino debe ser lo suficientemente grande para la cadena de entrada del usuario. Además, se puede utilizar un carácter opcional m
en los especificadores de conversión de cadenas, y obligará a la función a asignar un tamaño de búfer suficiente para almacenar la cadena de entrada. Por lo tanto, el usuario tendría que llamar a la función free
después de que el puntero dado ya no sea necesario.
#include <stdio.h>
#include <stdlib.h>
int main(void) {
char str1[1000];
printf("Input the text: ");
scanf("%[^\n]", str1); // takes everything before '\n'
printf("'%s'\n", str1);
exit(EXIT_SUCCESS);
}
Producción :
Input the text: temp string to be processed
'temp string to be processed'
Alternativamente, podemos utilizar scanf
para procesar cualquier entrada de texto antes del carácter dado modificando el especificador de la cadena de formato. El siguiente ejemplo muestra la llamada scanf
que escanea la entrada del usuario hasta encontrar el primer carácter de valor 9
.
#include <stdio.h>
#include <stdlib.h>
int main(void) {
char str1[1000];
printf("Input the text: ");
scanf(" %[^9]*", str1); // takes everything before '9' in string
printf("'%s'\n", str1);
exit(EXIT_SUCCESS);
}
Producción :
Input the text: temporary string 32j2 923mlk
'temporary string 32j2 '
Usar scanf
para analizar la entrada del usuario basándose en el formato dado
Otra característica útil de la función scanf
es analizar la entrada del usuario basándose en el formato dado. El carácter *
se utiliza en la cadena de formato para descartar los caracteres que coinciden con el siguiente especificador de conversión. El siguiente ejemplo de código demuestra cuando scanf
analiza entradas de texto que consisten en el símbolo obligatorio :
y sólo almacena los caracteres después del símbolo dado hasta el final de la línea. Esta opción puede ser útil para escanear los textos de formato fijo donde ciertos caracteres están presentes en las posiciones de los delimitadores.
#include <stdio.h>
#include <stdlib.h>
int main(void) {
char str1[1000];
printf("Input the text: ");
scanf("%*[^:]%*c%[^\n]", str1);
printf("'%s'\n", str1);
exit(EXIT_SUCCESS);
}
Producción :
Input the text: temporary value of var3: 324 gel
' 324 gel'
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook