Dominando Entrada y Salida en programación C
Cuando decimos Entrada, significa alimentar datos a un programa. Puede ser desde un archivo o línea de comandos. C proporciona funciones integradas para leer la entrada y pasarla al programa.
Cuando decimos Salida, significa mostrar datos en pantalla, impresora o archivo. C proporciona funciones integradas para mostrar datos en pantalla y guardarlos en archivos de texto o binarios.
Archivos Estándar
C trata todos los dispositivos como archivos. Dispositivos como la pantalla se direccionan igual que archivos. Tres archivos se abren automáticamente al ejecutar un programa para acceso a teclado y pantalla:
| Archivo Estándar | Puntero Archivo | Dispositivo |
|---|---|---|
| Entrada estándar | stdin | Teclado |
| Salida estándar | stdout | Pantalla |
| Error estándar | stderr | Tu pantalla |
Los punteros de archivo son el medio para acceder a archivos para lectura/escritura. Esta sección explica cómo leer valores de la pantalla e imprimir resultados.
Funciones getchar() y putchar()
int getchar(void) lee el siguiente carácter disponible de la pantalla y lo devuelve como entero. Lee solo un carácter a la vez. Úsalo en bucle para leer más.
int putchar(int c) pone el carácter pasado en pantalla y devuelve el mismo carácter. Pone uno a la vez; úsalo en bucle para mostrar más.
Ejemplo:
#include <stdio.h>
int main() {
int c;
printf("Introduce un valor: ");
c = getchar();
printf("\nIngresaste: ");
putchar(c);
return 0;
}
Al compilar y ejecutar, espera entrada. Al ingresar texto y pulsar Enter, lee solo un carácter:
$./a.out Introduce un valor: esto es prueba Ingresaste: e
Funciones gets() y puts()
char *gets(char *s) lee una línea de stdin al buffer apuntado por s hasta nueva línea o EOF.
int puts(const char *s) escribe la cadena 's' y nueva línea a stdout.
NOTA: gets() está obsoleta; usa fgets() en su lugar.
#include <stdio.h>
int main() {
char str[100];
printf("Introduce un valor: ");
gets(str);
printf("\nIngresaste: ");
puts(str);
return 0;
}
Al ejecutar, lee la línea completa:
$./a.out Introduce un valor: esto es prueba Ingresaste: esto es prueba
Funciones scanf() y printf()
int scanf(const char *formato, ...) lee de stdin y analiza según formato.
int printf(const char *formato, ...) escribe en stdout según formato.
El formato puede ser cadena constante, pero puedes especificar %s, %d, %c, %f, etc., para leer/imprimir cadenas, enteros, caracteres, flotantes. Hay muchas opciones de formato. Ejemplo simple:
#include <stdio.h>
int main() {
char str[100];
int i;
printf("Introduce un valor: ");
scanf("%s %d", str, &i);
printf("\nIngresaste: %s %d ", str, i);
return 0;
}
Al ejecutar:
$./a.out Introduce un valor: siete 7 Ingresaste: siete 7
Nota: scanf() espera entrada en el mismo formato que los especificadores (%s %d = "cadena entero"). Si das "cadena cadena" o "entero entero", se considera entrada incorrecta. Segundo, al leer cadena, scanf() se detiene al encontrar espacio; "esto es prueba" son tres cadenas para scanf().
Lenguaje C
- Entendiendo palabras clave e identificadores en C#: Reglas, listas y mejores prácticas
- Fundamentos de C#: Entrada y salida esenciales
- Clases y objetos en C#: Fundamentos para POO robusta
- Dominando la Entrada y Salida en C++: Guía Práctica
- Dominando la entrada/salida en C: scanf() y printf() explicados
- Dominando flujos en C++: cout, cin, cerr, clog – Guía práctica
- Entendiendo constantes y literales en C: Tipos, uso y mejores prácticas
- Constantes y literales en C#: Tipos, reglas y mejores prácticas
- Dominando Latches D: Diseño, Operación y Diferencias Clave
- Dominando E/S e importación de módulos en Python: Guía práctica
- Dominar Entrada y Salida en Java: Imprimir, Leer y Formatear Datos