MEJOR SITIO PARA DESARROLLADORES WEB
C Idioma. W3Schools en español. Lecciones para principiantes

Ua En De

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.