C Entrada del usuario
Entrada del usuario
Ya has aprendido que printf()
se utiliza para generar valores en C.
Para obtener entrada del usuario, puede utilizar la función scanf()
:
Ejemplo
Genere un número ingresado por el usuario:
// Crea una variable entera que almacenará el número que obtenemos del usuario.
int myNum;
// Pide al usuario que escriba un número
printf("Escribe un número: \n");
// Obtener y guardar el número de tipos de usuarios
scanf("%d", &myNum);
// Muestra el número que el usuario escribió
printf("Tu número es: %d", myNum);
Inténtalo tú mismo »
La función scanf()
toma dos argumentos: el especificador de formato de la variable (%d
en el ejemplo anterior) y el operador de referencia (&myNum
), que almacena la dirección de memoria de la variable.
Consejo: Aprenderá más sobre las direcciones de memoria y las funciones en el siguiente capítulo.
Múltiples entradas
La función scanf()
también permite múltiples entradas (un número entero y un carácter en el siguiente ejemplo):
Ejemplo
// Crea una variable int y char
int myNum;
char myChar;
// Pídale al usuario que escriba un número Y un carácter
printf("Escribe un número Y un carácter y presiona enter: \n");
// Obtenga y guarde el número Y carácter de los tipos de usuario
scanf("%d %c", &myNum, &myChar);
// Imprimir el numero
printf("Tu número es: %d\n", myNum);
// Imprimir el personaje
printf("Tu personaje es: %c\n", myChar);
Inténtalo tú mismo »
Tomar entrada de cadena
También puede obtener una cadena ingresada por el usuario:
Ejemplo
Mostrar el nombre de un usuario:
// Crear una cadena
char firstName[30];
// Pídale al usuario que ingrese algún texto
printf("Ponga su primer nombre: \n");
// Obtener y guardar el texto
scanf("%s", firstName);
// Salida del texto
printf("Hello %s", firstName);
Inténtalo tú mismo »
Nota: Cuando trabaje con cadenas en scanf()
, debe especificar el tamaño de la cadena/matriz (usamos un número muy alto, 30 en nuestro ejemplo, pero al menos entonces estamos seguros de que almacenará suficientes caracteres para el nombre), y no es necesario utilizar el operador de referencia (&
).
Sin embargo, la función scanf()
tiene algunas limitaciones: considera el espacio (espacios en blanco, tabulaciones, etc.) como carácter final, lo que significa que solo puede mostrar un único palabra (incluso si escribe muchas palabras). Por ejemplo:
Ejemplo
char fullName[30];
printf("Escribe tu nombre completo: \n");
scanf("%s", &fullName);
printf("Hello %s", fullName);
// Escribe tu nombre completo: John Doe
// Hello John
Según el ejemplo anterior, se esperaría que el programa imprimiera "John Doe", pero solo imprime "John".
Por eso; Cuando trabajamos con cadenas, a menudo usamos la función fgets()
para leer una línea de texto. Tenga en cuenta que debe incluir los siguientes argumentos: el nombre de la variable de cadena, sizeof
(string_name), y stdin
:
Ejemplo
char fullName[30];
printf("Escribe tu nombre completo: \n");
fgets(fullName, sizeof(fullName), stdin);
printf("Hello %s", fullName);
// Escribe tu nombre completo: John Doe
// Hello John Doe
Inténtalo tú mismo »
Utilice la función scanf()
para obtener una sola palabra como entrada y utilice fgets()
para varias palabras.