>> <<

Lenguaje C

Entrada de datos por teclado

Existen diversas formas de recoger información desde teclado en C, dependiendo del tipo de información que queramos recoger.

Lectura de datos simples con scanf

La instrucción scanf se emplea para leer datos simples (enteros, reales, caracteres, e incluso palabras), empleando una sintaxis similar a la instrucción printf. Como primer parámetro, acepta una cadena de texto con el formato del dato a leer. Aquí podemos incluir los mismos símbolos que en printf para especificar dicho tipo de dato:

Después, como segundo parámetro, se indica la variable donde queremos almacenar el dato que leamos. Dicha variable se pasa normalmente por referencia con un &, salvo que sea un dato complejo (como por ejemplo un array de caracteres).

Veamos algunos ejemplos:

int n;
char palabra[100];
printf("Escribe un número:\n");
scanf("%d", &n);
printf("Escribe ahora una palabra:\n");
scanf("%s", palabra);

Podemos también definir varios símbolos seguidos en la instrucción scanf y luego tantos parámetros como variables vayamos a recoger. Por ejemplo:

int n1, n2;
float f;
printf("Escribe dos enteros y un real:\n");
scanf("%d %d %f", &n1, &n2, &f);

En este caso, deberíamos introducir los tres datos separados por espacios en el teclado.

Lectura de textos

Si queremos leer textos, la instrucción scanf se queda algo corta, ya que sólo nos va a servir para leer palabras sueltas. En este caso, puede ser más recomendable emplear instrucciones como gets o fgets. Ambas reciben como parámetro la variable donde almacenar el texto (que en el caso de C es un array de caracteres), y en el caso de fgets podemos especificar desde dónde lo queremos leer. Así, podríamos leerlo o bien de teclado (empleando el identificador stdin de entrada estándar) o bien de un fichero de texto.

Por ejemplo:

// Suponemos un nombre completo inferior a 100 caracteres
char nombreCompleto[100];
printf("Dime tu nombre completo:\n");
gets(nombreCompleto);
// Otra alternativa: indicamos variable, tamaño máximo y desde dónde leer
fgets(nombreCompleto, 100, stdin);
(C) NachoIB, 2020 - contacto.lenguaj.es@gmail.com