Gvvb

Páginas: 11 (2636 palabras) Publicado: 29 de enero de 2013
16. Entrada y salida (E/S) stdio.h
En este capítulo se verán varias formas de entrada y salida (E/S). Se han mencionado brevemente algunas formas y ahora se revisarán con un poco más de detalle.
Los programas que hagan uso de las funciones de la biblioteca de E/S deben incluir la cabecera, esto es:
#include <stdio.h>
16.1 Reportando errores
En muchas ocasiones esútil reportar los errores en un programa de C. La función de la biblioteca estándar perror es la indicada para hacerlo. Es usada conjuntamente con la variable errno y frecuentemente cuando se encuentra un error se desea terminar el programa antes. Además se revisa la función exit() y errno, que en un sentido estricto no son parte de la biblioteca stdio.h, para ver como trabajan con perror.
16.1.1perror()
El prototipo de la funcion perror es:
void perror(const char *s);
La función perror() produce un mensaje que va a la salida estándar de errores, describiendo el último error encontrado durante una llamada al sistema o a ciertas funciones de biblioteca. La cadena de caracteres s que se pasa como argumento, se muestra primero, luego un signo de dos puntos y un espacio enblanco; por último, el mensaje y un salto de línea. Para ser de más utilidad, la cadena de caracteres pasada como argumento debería incluir el nombre de la función que incurrió en el error. El código del error se toma de la variable externa errno, que toma un valor cuando ocurre un error, pero no es puesta a cero en una llamada no errónea.
16.1.2 errno
A la variable especial del sistema errnoalgunas llamadas al sistema (y algunas funciones de biblioteca) le dan un valor entero, para indicar que ha habido un error. Esta variable esta definida en la cabecera #include <errno.h> y para ser usada dentro de un programa debe ser declarada de la siguiente forma:
extern int errno;
El valor sólo es significativo cuando la llamada devolvió un error (usualmente -1),algunas veces una función también puede devolver -1 como valor válido, por lo que se debe poner errno a cero antes de la llamada, para poder detectar posibles errores.
16.1.3 exit
La función exit tiene el siguiente prototipo de acuerdo a la cabecera #include <stdlib.h>:
void exit(int status);
La función produce la terminacón normal del programa y la devolución de status alproceso padre o al sistema operativo. El valor de status es usado para indicar como ha terminado el programa:
o
sale con un valor EXIT_SUCCESS en una terminación
o
sale con un valor EXIT_FAILURE en una terminación
Por lo tanto cuando se encuentre un error se llamará a la función como exit(EXIT_FAILURE) para terminar un programa con errores.
16.2 Flujos
Los flujos son una formaflexible y eficiente para leer y escribir datos.
Existe una estructura interna de C, FILE, la cual representa a todas los flujos y esta definida en stdio.h. Por lo tanto simplemente se necesita referirse a la estructura para realizar entrada y salida de datos.
Para usar los flujos entonces se debe declarar una variable o apuntador de este tipo en el programa. No se requiere conocer más detallesacerca de la definición. Se debe abrir un flujo antes de realizar cualquier E/S, después se puede accesar y entonces se cierra.
El flujo de E/S usa un BUFFER, es decir, un pedazo fijo de área temporal de la memoria (el buffer) es leído o escrito a un archivo. Lo siguiente se muestra en la figura 17.1. Observar que el apuntador del archivo actualmente apunta a éste buffer.
|
Figura 16.1:Modelo de entrada salida usando un buffer. |
Esto conduce a un uso eficiente de E/S pero se debe tener cuidado: los datos escritos a un buffer no aparecen en un archivo (o dispositivo) hasta que el buffer es escrito (con \n se puede hacer). Cualquier salida anormal del código puede causar problemas.
16.2.1 Flujos predefinidos
En UNIX se tienen predefinidos 3 flujos (en stdio.h): stdin, stdout y...
Leer documento completo

Regístrate para leer el documento completo.

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS