12.176 cursos gratis
8.741.981 alumnos
Facebook Twitter YouTube
Busca cursos gratis:

Introducción al Lenguaje C

Autor: Fernando Guerrero
Curso:
8,81/10 (467 opiniones) |73701 alumnos|Fecha publicación: 10/05/2004

Capítulo 11:

 Entrada y Salida

ENTRADA Y SALIDA

En C no existe ninguna palabra clave para realizar la entrada y salida de datos (E/S). Se realizan a través de funciones de biblioteca (concretamente, la biblioteca stdio.h, ver capítulo 13).

11.1 E/S por consola

Las funciones principales que realizan la entrada y salida sin formato son:getchar(): Lee un carácter del teclado. Espera hasta que se pulsa una tecla y entonces devuelve su valor.

putchar(): Imprime un carácter en la pantalla en la posición actual del cursor.

gets(): Lee una cadena de caracteres introducida por el teclado y la sitúa en una dirección apuntada por su argumento de tipo puntero a carácter.

puts(): Escribe su argumento de tipo cadena en la pantalla seguida de un carácter de salto de línea.

El siguiente fragmento de código lee un carácter del teclado y lo muestra por pantalla. A continuación lee una cadena (de 10 caracteres incluido el carácter nulo) y también la muestra por pantalla:

#include <stdio.h>
main()
{
char cadena[10];
int i;
i=getchar();
putchar(i);
gets(cadena);
puts(cadena);
}

Las funciones principales que realizan la entrada y salida con formato, es decir, se pueden leer y escribir en distintas formas controladas, son:

printf(): Escribe datos en la consola con el fo rmato especificado.

scanf(): Función de entrada por consola con el formato especificado.

Sus prototipos son los siguientes:

int printf (" caracteres de transmisión y escape", lista de argumentos);

int scanf (" caracteres de transmisión y escape", lista de argumentos);

En la función printf() (con scanf() no), entre las comillas se pueden poner rótulos literales mezclados con los caracteres de transmisión.

Los caracteres de transmisión son precedidos de un % para distinguirlos de los normales:

Caracteres de transmisión Argumento que transmite

%c Int: un carácter simple

%Ns Char *: una cadena de caracteres

%Nd %Ni Int: un número decimal

%o Int: octal sin signo

%x %X Int: hexadecimal sin signo

%Nu Int: decimal sin signo

%N.Df Float o double con D decimales, en notación fija

%N.De %N.DE Float o double con D decimales, en notación científica

%N.Dg %N.DG Float o double en notación científica si el exponente es menor de diez a la menos cuatro, o fija en caso contrario.

%p Void *: escribe el número que corresponde al puntero

%% Escribe un signo de %

Donde aparecen las letras N.D o no se pone nada o serán en realidad dos números que dicen que la transmisión total del valor al menos ocupará N posiciones (si el número necesita más de N las tomará, si usa menos las dejara en blancos, a menos que se quiera rellenar con ceros, entonces se pone 0N) y que la parte decimal tendrá como máximo las D posiciones después de un punto.

Normalmente el número se ajusta por la derecha para el campo de N posiciones que le hemos dicho que utilice; si deseamos el ajuste por la izquierda, se añade un signo menos precediendo al valor N (-N).

Una l precediendo a N (p.e. %l5d) significa que transmitiremos un long int : si, por el contrario, es una h significa que transmitiremos un short int.

Existe otro tipo de carácter especial, los caracteres de escape, que tienen un significado especial. Los caracteres de escape son los siguientes:

\n Nueva línea
\t Tabulador
\b Espacio atrás
\r Retorno de carro
\f Comienzo de página
\a Pitido sonoro
\¿ Comilla simple
\" Comilla doble
\\ Barra invertida
\xdd Código ASCII en notación hexadecimal (cada d representa un dígito)
\ddd Código ASCII en notación octal (cada d representa un dígito)

La lista de argumentos estará separada por comas. Debe existir una correspondencia biyectiva entre los caracteres de transmisión (aquellos que comienzan con un %) y la lista de argumentos a transmitir.

Cabe destacar una diferencia en la lista de argumentos entre las funciones printf() y  scanf(). En está ultima función (scanf()), la lista de argumentos va precedida por el operador de dirección(&), puesto que scanf() requiere que los argumentos sean las direcciones de las variables, en lugar de ellas mismas.

(&), puesto que scanf() requiere que los argumentos sean las  direcciones de las variables, en lugar de ellas mismas.

11.2 E/S por archivos

En C un archivo puede ser cualquier cosa, desde un archivo de disco a un terminal o una impresora. Se asocia una secuencia con un archivo específico realizando una operación de apertura, una vez que está abierto, la información puede ser intercambiada entre éste y el programa. El puntero a un archivo es el hilo que unifica el sistema de E/S con buffer. Un puntero a un archivo es un puntero a una información que define varias cosas sobre él, incluyendo el nombre, el estado y la posición actual del archivo. En esencia, el puntero a un archivo identifica un archivo en disco específico y utiliza la secuencia asociada para dirigir el funcionamiento de las funciones de E/S con buffer. Para obtener una variable de tipo puntero a archivo se debe utilizar una sentencia como la siguiente:FILE *punt;

La función fopen() abre una secuencia para que pueda ser utilizada y le asocia a un archivo. Su prototipo es: FILE *fopen(const char *nombre_archivo, const char *modo); Donde nombre_archivo es un puntero a una cadena de caracteres que representan un nombre válido del archivo y puede incluir una especificación de directorio. La cadena que apunta modo determina cómo se abre el archivo. Los modos son los siguientes:

r: Abre un archivo de texto para lectura.
w: Crea un archivo de texto par escritura
a: Abre un archivo de texto para añadir
r+: Abre un archivo de texto para lectura/escritura
w+: Crea un archivo de texto para lectura/escritura
a+: Añade o crea un archivo de texto para lectura/escritura

La función fclose() cierra una secuencia que fue abierta mediante una llamada a fopen(). Escribe toda la información que todavía se encuentre en el buffer del disco y realiza un cierre formal del archivo a nivel del sistema operativo. También libera el bloque de control de archivo asociado con la secuencia, dejándolo libre para su reutilización. A veces es necesario cerrar algún archivo para poder abrir otro, debido a la existencia de un límite del sistema operativo en cuanto al número de archivos abiertos. Su prototipo es: int fclose(FILE *fp);

La función putc() escribe caracteres en un archivo que haya sido abierto previamente para operaciones de escritura, utilizando la función fopen(). Su prototipo es: int putc(int car, FILE *pf);

La función getc() escribe caracteres en un archivo que haya sido abierto, en modo lectura, mediante fopen(). Su prototipo es: int getc(FILE *pf);La función fputs() escribe la cadena en la secuencia especificada. Su prototipo es: fputs() escribe la cadena en la secuencia especificada. Su prototipo es:  int fputs(const char *cad, FILE *pf);La función fgets() lee una cadena de la secuencia especificada hasta que se lee un carácter de salto de línea o hasta que se han leído longitud-1 caracteres.

La función rewind() inicia el indicador de posición al principio del archivo indicado por su argumento. Su prototipo es: rewind() inicia el indicador de posición al principio del archivo indicado por su argumento. Su prototipo es: void rewind(FILE *pf);

Existen otras muchas funciones en la biblioteca estándar de C (ver capítulo 13) como pueden serremove(): Borra el archivo especificado.

fflush(): Vacía el contenido de una secuencia de salida.

fread(): Lee tipos de datos que ocupan más de un byte. Permiten la lectura de bloques de cualquier tipo de datos.

fwrite(): Escribe tipos de datos que ocupan más de un byte. Permiten la escritura de bloques de cualquier tipo de datos.

fprintf(): Hace las funciones de printf() sobre un fichero.

fscanf(): Hace las funciones de scanf() sobre un fichero.

feof(): Detecta el final de un fichero.

ferror(): Detecta un error en la lectura/escritura de un fichero.

fclose() cierra una secuencia que fue abierta mediante una llamada a fopen().

putc() escribe caracteres en un archivo que haya sido abierto previamente para operaciones de escritura, utilizando la función fopen().

La función getc() escribe caracteres en un archivo que haya sido abierto, en modo lectura, mediante fopen(). Su prototipo es:

La función fputs() escribe la cadena en la secuencia especificada. Su prototipo es: int fputs(const char *cad, FILE *pf);

La función fgets() lee una cadena de la secuencia especificada hasta que se lee un carácter de salto de línea o hasta que se han leído longitud-1 caracteres. Su prototipo es: fgets() lee una cadena de la secuencia especificada hasta que se lee un carácter de salto de línea o hasta que se han leído longitud-1 caracteres. Su prototipo es:int fgets(char *cad, FILE *pf);

Capítulo siguiente - PreProcesador
Capítulo anterior - Punteros

Nuestras novedades en tu e-mail

Escribe tu e-mail:



MailxMail tratará tus datos para realizar acciones promocionales (vía email y/o teléfono).
En la política de privacidad conocerás tu derechos y gestionarás la baja.

Cursos similares a Introducción al Lenguaje C



  • Vídeo
  • Alumnos
  • Valoración
  • Cursos
1. Lenguaje C++. Guía para Programadores
C++ es un potente lenguaje de programación que apareció en 1980, continuando con... [01/07/04]
37.692  
2. Action Script 3. Lenguaje de programación
Action script 3 . Este curso de informática fue realizado especialmente para las... [04/05/11]
274
Curso con video
3. Introducción a Oracle
En el curso se introducen los conceptos básicos para saber que es un Gestor de... [01/02/06]
21.247  

¿Qué es mailxmail.com?|ISSN: 1699-4914|Ayuda
Publicidad|Condiciones legales de mailxmail