Entradas y Salidas Del Lenguaje C
Entradas y Salidas Del Lenguaje C
Entradas y Salidas Del Lenguaje C
Las Funciones de E/S más simples son getchar() que lee un carácter del teclado, espera
un retorno, es decir un enter y el eco aparece. Es decir la tecla presionada.
Programa que espera que se presiona una tecla, la muestra en pantalla, y además
muestra el carácter siguiente:
Ejemplo 2.1:
#include <stdio.h>
#include <conio.h>
main()
{
char car;
clrscr(); /*Se encarga de borrar la pantalla por eso se
llama clear screen*/
car=getchar();
putchar(car+1);
getch();
return 0;
}
Ejemplo 2.2:
#include <stdio.h>
#include <conio.h>
main()
{
char x; /*Declaramos x como caracter*/
printf("Para Finalizar Presione cualquier Tecla:");
x= getchar();/*Captura y muestra el caracter presionado*/
getch();/*Espera a que se presione cualquier otra tecla
para finalizar*/
return 0;
}
En una sola instrucción printf() pueden escribirse varios datos. Por ejemplo:
int a;
float x;
a = 5;
x = 10.33;
printf("%i%f", a, x);
Código Formato
%d Un entero
%i Un entero
%c Una carácter
%s Una cadena
%f Un real
%ld Entero largo
%u Decimal sin signo
%lf Doble posición
%h Entero corto
%o Octal
%x Hexadecimal
%e Notación Científica
%p Puntero
%% Imprime Porcentaje
Una última observación sobre printf(). Hay ciertos caracteres que no son directamente
imprimibles desde el teclado. Uno de ellos es el salto de línea. Para poder ordenar a
En concreto, el carácter “salto de línea” se indica con el código “ \n”. Observe las
diferencias entre estos dos bloques de instrucciones para intentar comprender la
importancia del salto de línea:
int a;
a = 5;
printf("La variable a vale %i", a);
a = 14;
printf("La variable a vale %i", a);
La cadena_de_formato tiene la misma composición que la de printf(). Los datos son las
variables donde se desea almacenar el dato o datos leidos desde el teclado. ¡Cuidado!
Con los tipos simples, es necesario utilizar el operador & delante del nombre de la
variable, porque esa variable se pasa por referencia a scanf() para que ésta pueda
modificarla.
Por ejemplo:
int a, b;
float x;
scanf("%d", &a);
scanf("%d%f", &b, &x);
La primera llamada a scanf() sirve para leer un número entero desde teclado y
almacenarlo en la variable a. La segunda llamada lee dos números: el primero, entero,
que se almacena en b; y, el segundo, real, que se almacena en x.
La función scanf() tiene alguna otra funcionalidad añadida para el manejo de cadenas
de caracteres que por ahora no vamos a discutir, para no agobiar.
En pseudocódigo:
algoritmo suma_y_resta
variables
a y b son enteros
inicio
escribir ("Introduzca dos números enteros")
leer(a, b)
si (a < b) entonces
escribir("La suma de a y b es:", a+b)
si_no
escribir("La resta de a menos b es:", a–b)
fin
En lenguaje C:
/* Programa suma y resta */
#include <stdio.h>
int main()
{
int a, b;
printf ("Introduzca dos números enteros\n");
scanf("%d%d", &a, &b);
if (a < b)
printf("La suma de %d y %d es: %d", a, b, a+b);
else
printf("La resta de %d menos %d es: %d", a, b, a–b);
return 0;
}
Función gets
Lee una cadena de carácter introducido por el teclado. Se puede introducir caracteres
hasta que se de un retorno de carro, (enter); el cual no es parte de la ca dena; en su
lugar se coloca un terminador nulo \0.
Sintaxis:
char *gets(char *s);
gets lee una cadena de caracteres terminada con un retorno de línea desde la entrada
estándar y la almacena en s. El carácter de retorno de línea es reemplazado con el
carácter nulo en s.
Observa que la manera en que hacemos referencia a una cadena dentro de la función
es char *, el operador * indica que debemos pasar como argumento la dirección de
memoria donde estará almacenada la cadena a leer. Veremos la explicación en el
capítulo de punteros, baste decir que a nivel del compilador char *cad y char cad[], son
equivalentes, o casi.
gets permite la entrada de caracteres que indican huecos, como los espacios y los
tabuladores. gets deja de leer después de haber leído un carácter de retorno de línea;
todo aquello leído será copiado en s, incluido en carácter de retorno de línea.
Esta función no comprueba la longitud de la cadena leída. Si la cadena de entrada no
es lo suficientemente larga, los datos pueden ser sobrescritos o corrompidos. Más
adelante veremos que la función fgets proporciona mayor control sobre las cadenas de
entrada.
Valor de retorno:
Función puts
Imprime en pantalla, el argumento guardado en la variable que se manda a impresión.
Sintaxis:
int puts(const char *s);
Valor de retorno:
Si tiene éxito, puts devuelve un valor mayor o igual a cero. En caso contrario devolverá
el valor EOF.
Ejemplo:
char cad[80];
int i;
do {
gets(cad);
for(i = 0; cad[i]; i++)
if(cad[i] == ' ') cad[i] = '_';
puts(cad);
} while (cad[0] != '\000');
Empezamos a llegar a ejemplos más elaborados. Este ejemplo leerá cadenas en "cad",
mientras no introduzcamos una cadena vacía. Cada cadena será recorrida carácter a
carácter y los espacios de sustituirán por caracteres '_'. Finalmente se visualizará la
cadena resultante.
Llamo tu atención ahora sobre la condición en el bucle for, comparándola con la del
bucle do while. Efectivamente son equivalentes, al menos para i == 0, la condición del
bucle do while podría haberse escrito simplemente como while (cad[0]). De hecho, a
partir de ahora intentaremos usar expresiones más simples.