Obtener la entrada del usuario en C

Jinku Hu 12 octubre 2023
  1. Utiliza la función scanf para obtener la entrada del usuario según un formato determinado en C
  2. Usar scanf para analizar la entrada del usuario basándose en el formato dado
Obtener la entrada del usuario en C

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'
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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

Artículo relacionado - C IO