Fichero c y c++

537 views

Published on

Published in: Education
  • Be the first to comment

  • Be the first to like this

Fichero c y c++

  1. 1.  Un stream es una especie de canal a través del cual fluyen los datos. Técnicamente, un stream es el enlace lógico utilizado por el programador en C, C++ para leer o escribir datos desde y hacia los dispositivos estándar conectados a la PC. El dispositivo estándar para manipular entradas es el teclado y está asociado al objeto cin; el dispositivo estándar de salida está asociado al objeto cout.
  2. 2.  El almacenamiento de datos en variables y arrays (arreglos) es temporal; los datos se pierden cuando se termina el programa. La mayoría de las aplicaciones requiere que la información se almacene de forma persistente es decir que no se borre cuando se termine la ejecución del programa. Debido a esto se requiere utilizar archivos (ficheros) para almacenar de modo permanente grandes cantidades de datos, incluso después de que los programas que crean los datos se terminan.
  3. 3. 1. Un fichero se identifica por su nombre, el cual generalmente está compuesto por:• Path: Indica la ruta para encontrar el fichero incluyendo la unidad de almacenamiento donde se halla.• Nombre• Extensión: Son tres caracteres que sirven para identificar el tipo de ficheroPor ejemplo: "C:Mis documentosapuntes.doc" path extensión nombre
  4. 4. 2. Un fichero puede estar compuesto por registros, cada uno de los cuales contiene información sobre un elemento. Un registro está compuesto por campos. Ejemplo: Se tiene un fichero de registros o estructuras Articulo struct Articulo { int codigo; char descripcion[maxdesc]; float precio; };
  5. 5.  Secuencial: para acceder al elemento i-ésimo se recorre desde el primer elemento hasta el elemento i-1.Ejemplo: El almacenamiento en una cinta(casette)es de acceso secuencial. Directo: para acceder al elemento i-ésimo se hace directamente.Ejemplo: El almacenamiento en un disco es deacceso directo.
  6. 6.  Secuencial: Las consultas de los registros se hace secuencialmente desde el primer elemento hasta el elemento i-ésimo. Directa: Se establece una relación entre la clave del registro y la posición del registro en el fichero.Ejemplo: Se tiene un fichero de registros Articulo cuyo campoclave es el código. Los códigos son números que van de 10 en10, ej. 10, 20, 30, 40, 50, etc. Se realiza la siguiente función deacceso F: F (código) = código(10);La cual que devuelve la posición del registro a partir delcódigo, y por lo tanto puede accederse a él directamente. Indexada: Básicamente es una organización secuencial a la que se le agrega una o más tablas de índices que permiten acceder a los registros de manera más directa.
  7. 7.  Existen operaciones que afectan a todo el fichero, entre las cuales se enumeran: Crear un fichero Borrar un fichero Ordenar un fichero según algún criterio de orden Fusionar dos ficheros para formar un tercer fichero Dividir un fichero en dos o más ficheros
  8. 8.  Además, existen otras operaciones que afectan a uno o más registros del fichero, entre las cuales se enumeran: Alta de un nuevo registro Baja de un registro Modificación de uno o más registros Consulta de uno o más registros
  9. 9.  Su sintaxis es: nombre_fstream.operacion Open(nombre_fichero, opciones): Puede usarse cuando en el constructor se ignoró la apertura del fichero.Ejemplo:fichero1.open("prueba.txt", ios::in); esto antes de realizarcualquier lectura. close(): Cuando se desea cerrar un streamEjemplo:fichero1.close(); esto después de haber realizado todas laslecturas y/o escrituras. eof(): Es una función que devuelve un valor diferente a 0 (TRUE) si se llegó al fin de fichero, de otro modo devuelve 0 (FALSE)Ejemplo:if (fichero1.eof()){ //fin de fichero, no hay más datos}
  10. 10.  is_open(): Es una función que devuelve un valor diferente a 0 (TRUE) si el fichero asociado al stream está abierto, de otro modo devuelve 0 (FALSE).Ejemplo:if (fichero1.is_open()){cout<<el fichero está abierto;} tellp(), es una función que devuelve como resultado la posición actual (tipo pos_type) de un stream de salida. seekp(posición, posición_inicial), sitúa el lugar de escritura indicada en posición en forma relativa a posicion_inicial, la cual puede ser ios::beg (comienzo), ios::cur (actual), ios::end (fin).
  11. 11.  Existe una manera de manipular ficheros en C++ mediante los denominados streams. Un stream representa un flujo de información, desde el programa a un dispositivo o periférico de salida, o desde un periférico de entrada al programa La manera de utilizar un stream de entrada es:stream_entrada >> variable; La manera de utilizar un stream de salida es:stream_salida << información.
  12. 12.  Hasta el momento se han utilizado dos streams predefinidos: cin es un stream de entrada asociado al teclado cout es un stream de salida asociado a la pantallaPueden definirse stream de entrada y/o salida yasociarlos a un fichero, de manera que se puedanrecibir datos del fichero y/o enviar datos al ficherorespectivamente. La librería que se debe utilizar es <fstream.h>. Se debe declarar un stream mediante el constructor: fstream nombre_stream (nombre_fichero, opciones);
  13. 13.  Las opciones indican diferentes modos entre los cuales se encuentran: ios::in: Crea un stream de entrada, es decir, para lectura de datos del fichero ios::out: Crea un stream de salida, es decir, para escritura de datos en el fichero ios::ate: Hace que la posición inicial sea al final del fichero ios::app: Se sitúa al final del fichero antes de cada escritura ios::trunc: Borra cualquier cosa que pudiera haber en el fichero ios::nocreate: Si el fichero no existe fallará ios::noreplace: Si el fichero existe fallará ios::bin: Abre el fichero como binario
  14. 14. Ejemplo: stream de salida asociado al fichero prueba.txt. Se borra cualquier contenido del mismo. fstream fichero1 ("prueba.txt", ios::out|ios::trunc) stream de entrada asociado al fichero prueba.txt fstream fichero2 ("prueba.txt", ios::in);
  15. 15.  Cuando se quiere guardar información de estructuras o registros en C/C++ se deben utilizar las funciones de ficheros de la librería <stdio.h>. Existe un tipo de datos denominado FILE por medio del cual se manipulan los ficheros. Entre las funciones definidas para trabajar con ficheros se encuentran:
  16. 16.  FILE* fopen (const char *name, const char *mode): recibe como parámetros: Un string name con el nombre del fichero Un string mode con el modo de apertura del fichero que puede ser: "r" : abre fichero existente para lectura. Si no existe falla la operación. "w" : abre fichero para escritura. Si existe, sus contenidos se borran. "a" : abre fichero para escritura. Si existe, se agregan los datos al final "r+" : abre fichero para lectura y escritura. El fichero debe existir. "w+" : abre fichero para lectura y escritura. Si existe, sus contenidos se borran "a+" : abre fichero para lectura y escritura. Si existe, se agregan datos al final
  17. 17.  int fclose (FILE *file)La función fclose cierra el fichero abierto file. size_t fread (void *pbuffer, size_t size, size_t number, FILE *file)Se usa para leer desde el fichero, y recibe como parámetros: Un puntero a FILE del fichero file desde el cual se quiere leer. Un número number de tipo size_t que indica la cantidad de elementos que se quiere leer. Un número size de tipo size_t que indica el tamaño en bytes de cada elemento. Un puntero pbuffer a un lugar donde se copiarán los elementos leídos. size_t fwrite (void *pbuffer, size_t size, size_t number, FILE *file)La función fwrite se usa para escribir en el fichero, y recibe losmismos parámetros que la función fread.
  18. 18.  int ftell (FILE *file)La función ftell devuelve un int que indica el númerode bytes desde el comienzo hasta la posición dondese encuentra el cabezal de lectura. int feof (FILE *file)Devuelve 0 mientras las lecturas hechas no lleguen alfinal del fichero. void rewind (FILE *file)La función rewind sitúa el cabezal de lectura al iniciodel fichero.
  19. 19.  Luís, Joyanes aguilar. (2003): “Fundamentos de Programación: Algoritmos, Estructuras de Datos y Objetos.” Madrid.Mc-Graw Hill. Cuarta edición. Páginas 201 hasta 346 (Capitulo #9) . Anónimo, Fundamentos de informática [en línea], Ficheros, Fecha de consulta: 28-12-2012, Disponible en: http://dmi.uib.es/~abasolo/foninf/2002-2003/capitulos/6- ficheros.html

×