C - Entrada y salida
Cuando decimos Input, significa introducir algunos datos en un programa. Una entrada se puede dar en forma de archivo o desde la línea de comando. La programación en C proporciona un conjunto de funciones integradas para leer la entrada dada y alimentarla al programa según los requisitos.
Cuando decimos Output, significa mostrar algunos datos en la pantalla, impresora o en cualquier archivo. La programación en C proporciona un conjunto de funciones integradas para mostrar los datos en la pantalla de la computadora, así como para guardarlos en archivos de texto o binarios.
Los archivos estándar
La programación en C trata todos los dispositivos como archivos. Por lo tanto, los dispositivos como la pantalla se direccionan de la misma manera que los archivos y los siguientes tres archivos se abren automáticamente cuando se ejecuta un programa para proporcionar acceso al teclado y la pantalla.
Archivo estándar | Puntero de archivo | Dispositivo |
---|---|---|
Entrada estándar | stdin | Teclado |
Salida estándar | stdout | Pantalla |
Error estándar | stderr | Tu pantalla |
Los punteros de archivo son los medios para acceder al archivo con fines de lectura y escritura. Esta sección explica cómo leer los valores de la pantalla y cómo imprimir el resultado en la pantalla.
Las funciones getchar () y putchar ()
los int getchar(void)La función lee el siguiente carácter disponible de la pantalla y lo devuelve como un número entero. Esta función lee solo un carácter a la vez. Puede utilizar este método en el bucle en caso de que desee leer más de un carácter de la pantalla.
los int putchar(int c)La función pone el carácter pasado en la pantalla y devuelve el mismo carácter. Esta función coloca solo un carácter a la vez. Puede utilizar este método en el bucle en caso de que desee mostrar más de un carácter en la pantalla. Compruebe el siguiente ejemplo:
#include <stdio.h>
int main( ) {
int c;
printf( "Enter a value :");
c = getchar( );
printf( "\nYou entered: ");
putchar( c );
return 0;
}
Cuando se compila y ejecuta el código anterior, espera a que ingrese algún texto. Cuando ingresa un texto y presiona enter, el programa continúa y lee solo un carácter y lo muestra de la siguiente manera:
$./a.out
Enter a value : this is test
You entered: t
Las funciones gets () y put ()
los char *gets(char *s) función lee una línea de stdin en el búfer apuntado por s hasta que termine una nueva línea o EOF (Fin de archivo).
los int puts(const char *s) La función escribe la cadena 's' y 'a' una nueva línea final en stdout.
NOTE:Aunque se ha desaprobado el uso de la función gets (), en lugar de usar gets, desea usar fgets () .
#include <stdio.h>
int main( ) {
char str[100];
printf( "Enter a value :");
gets( str );
printf( "\nYou entered: ");
puts( str );
return 0;
}
Cuando se compila y ejecuta el código anterior, espera a que ingrese algún texto. Cuando ingresa un texto y presiona enter, el programa continúa y lee la línea completa hasta el final, y la muestra de la siguiente manera:
$./a.out
Enter a value : this is test
You entered: this is test
Las funciones scanf () y printf ()
los int scanf(const char *format, ...) La función lee la entrada del flujo de entrada estándar. stdin y escanea esa entrada de acuerdo con format previsto.
los int printf(const char *format, ...) La función escribe la salida en el flujo de salida estándar. stdout y produce la salida de acuerdo con el formato proporcionado.
los formatpuede ser una cadena constante simple, pero puede especificar% s,% d,% c,% f, etc., para imprimir o leer cadenas, enteros, caracteres o flotantes respectivamente. Hay muchas otras opciones de formato disponibles que se pueden utilizar según los requisitos. Procedamos ahora con un ejemplo simple para comprender mejor los conceptos:
#include <stdio.h>
int main( ) {
char str[100];
int i;
printf( "Enter a value :");
scanf("%s %d", str, &i);
printf( "\nYou entered: %s %d ", str, i);
return 0;
}
Cuando el código anterior se compila y ejecuta, espera a que ingrese algún texto. Cuando ingresa un texto y presiona enter, el programa procede, lee la entrada y la muestra de la siguiente manera:
$./a.out
Enter a value : seven 7
You entered: seven 7
Aquí, debe tenerse en cuenta que scanf () espera la entrada en el mismo formato que proporcionó% sy% d, lo que significa que debe proporcionar entradas válidas como "string integer". Si proporciona "cadena de texto" o "entero entero", se asumirá como una entrada incorrecta. En segundo lugar, mientras lee una cadena, scanf () deja de leer tan pronto como encuentra un espacio, por lo que "esto es prueba" son tres cadenas para scanf ().