Manejo de archivos de datos en C

Slides:



Advertisements
Presentaciones similares
Laboratorio Lenguaje de Programación ING2101
Advertisements

Manejo de archivos.
Estructuras de control Secuenciales y selectivas
Tema #10. FICHEROS.
Archivos de Texto. Introducción Los archivos son una secuencia de bits que se guarda en el disco duro. La ventaja de utilizar archivos es que los datos.
Manipulación de archivos de texto
Uso de Archivos de Datos en Visual Basic
Estructura selectiva anidada
Tema 5 Sentencias básicas. Sentencia –Línea de código en C Básicas –Entrada de datos desde el teclado –Salida de datos por la pantalla –Asignación de.
FICHEROS.
LOGROS DEL PERÍODO Utiliza de forma correcta las funciones para entrada y salida de datos en c++. Utiliza los elementos básicos de un programa en c++.
Estructuras de control
Universidad Domingo Savio Facultad de Ciencias y Tecnología de la Información Carrera Ingeniería en Redes y Telecomunicaciones Materia : Programación I.
Fundamentos de la Programación Estructurada
Programación I Teoría IX: Entrada/Salida
Programación, Algoritmos y Estructuras de Datos
Estructuras externas de Datos: Archivos
Funciones. Programación, Algoritmos y Estructuras de Datos.
EJERCICIOS DE PROGRAMACION
INFORMATICA I Funciones CLASE 13.
Introducción al Lenguaje C (ANSI)
ESTRUCTURA DEL LENGUAJE C
Programación Estructurada
Introducción a la Computación
Una breve introducción
SOBRECARGA DE FUNCIONES
Ejemplos en C /* Ejemplos L/E en C con printf y scanf */ #include #include main(){ int i; int i; char nombre[30]; char nombre[30]; printf ("\nIntroduce.
Compiladores Análisis Léxico Oscar Bonilla Universidad Galileo.
Programación Científica
Funciones y procedimientos
FUNCIONES EN C.
4A4A4A4A Grado en Ingeniería Informática Grado en Ingeniería del Software Grado en Ingeniería de Computadores Luis Hernández Yáñez Facultad de Informática.
Programa “Coordenadas” Ing. Arturo Díaz Vargas Departamento de Sistemas División de Ciencias Básicas e Ingeniería UNIVERSIDAD AUTONOMA METROPOLITANA.
Tema 3 Entrada y Salida.
Archivos Programación.
Informática Ingeniería en Electrónica y Automática Industrial
Asignatura: Lenguaje de Programación de Sistemas PPT No.05 Programa vespertino de Ingeniería (E) en Sistemas Computacionales Profesor: José Estay Araya.
Archivos. fopen(...) Para comenzar a utilizar un archivo primero se debe abrir, invocando a la función fopen(...) FILE * fopen(char* nombre_arch, char*
Introducción a la Computación
Tema 7c Entrada y salida de funciones. Funciones Funcion Entradas SalidasTareas.
Características de “C”
Características de “C” Y Esta conformado por un Ambiente Integrado. Y Es un Lenguaje de Nivel medio. Y Es un compilador. YContiene un conjunto de palabras.
Sección 5-2 Estructuras de Control de Decisión Expresiones Lógicas.
Cadenas y apuntadores Programación.
FUNCIONES EN C.
Archivos Binarios Lenguaje C Prof. Gonzalo Pastor.
Archivos.
Estructuras-Archivos
Programación I Teoría VIII: Entrada/Salida
Lenguaje C Ing. Sonia Alexandra Pinzón Nuñez
Programación en Lenguaje C
Archivos Programación I MC Beatriz Beltrán Martínez.
Matrices y Funciones “En C” Semestre de Otoño 2006 Claudio Gutiérrez-Soto.
Entrada y salida Gestión de ficheros.
UNIVERSIDAD LATINA INTRODUCCION A LA PROGRAMACION INSTRUCCIONES INTERATIVAS.
INTRODUCCIÓN AL LENGUAJE C++. Instrucciones Temas.
Pelando la cebolla 1. Aquí discutiremos lo necesario del lenguaje necesario para implementar una metodología que llamo “pelando la cebolla”. Permite abordar.

Computación I. CI-2125 Tema VIII
Ing. Esp. Ricardo Cujar.  Lenguaje de programación orientado a objetos.  Desarrollado por Sun MicroSystems.  Independiente del Sistema Operativo gracias.
Repaso de archivos #include int main(void) { FILE *fp; fp=fopen(“prueba.txt”, “w”); if (fp==NULL) { printf(“Error al abrir el archivo\n”); printf(“No lo.
TIPOS DE DATOS Estructuras de control y repetición PARCIAL III.
Visual Basic Prof.: Carol Briones García. Uso de Archivos  Definición  Es un conjunto de información que se almacena en algún medio de escritura que.
Repaso C Ficheros, memoria dinámica, … Pablo San Segundo (C-206)
Archivos. Introducción Los datos que hemos tratado hasta el momento han residido en la memoria principal. Sin embargo, las grandes cantidades de datos.
Introducción al Lenguaje C (II) Cadenas de caracteres, archivos de cabecera, lectura y escritura Fundamentos de Programación Departamento de Lenguajes.
6.2 Clasificación: Archivos de texto y binarios Docente: Ezequiel Vargas castillo Materia: Programación orientada a objetos Unidad: 6 Flujos y archivos.
Programación en C - manejo de Archivos
UNIVERSIDAD AUTONOMA METROPOLITANA Programación Estructurada
Tema 10b Manejo de archivos de caracteres en C. E/S para archivos Las funciones y tipos están definidos en FILE –Estructura que define un descriptor de.
Transcripción de la presentación:

Manejo de archivos de datos en C Tema 10c Manejo de archivos de datos en C

Archivos de números Para leer datos desde un archivo de texto como enteros (o números en general) se puede utilizar fscanf. Para escribir datos numéricos en archivos de texto se puede utilizar fprintf. Los archivos deben ser abiertos en modo texto. Se utilizan las conversiones %d y %f ya vistas.

Archivos de números Ejemplo: Archivo de texto con números en un formato fijo 1 2 3 4 7, 8, 9, 10 1.4 ; 0.7 ; 9.001 ; 67.0

Archivos de números #include <stdio.h> int main(){ FILE* archivo; archivo = fopen("test3.txt","r"); if(archivo!=NULL){ int ds[4],i; double fs[4]; fscanf(archivo,"%d %d %d %d\n", &ds[0],&ds[1],&ds[2],&ds[3]); fscanf(archivo,"%d, %d, %d, %d\n", fscanf(archivo,"%lf ; %lf ; %lf ; %lf\n" &fs[0],&fs[1],&fs[2],&fs[3]); fclose(archivo); }

Archivos mixtos Archivos de texto con datos alfanuméricos Basta con especificar el tipo de conversión deseada para cada tipo de dato. colo-colo 0 huachipato 3 everton 5 cobreloa 1 u.Catolica 2 wanderers 3

Archivos mixtos #include <stdio.h> int main(){ FILE* archivo; archivo = fopen("test4.txt","r"); if(archivo!=NULL){ char visita[32], local[32]; int gvisita, glocal; int r=4; while(1){ r=fscanf(archivo,"%s %d %s %d\n", local,&glocal,visita,&gvisita); if(r!=4) break; if(glocal>gvisita) printf("Gana local (%s)\n",local); else if(glocal<gvisita) printf("Gana visita (%s)\n",visita); else printf("Empate\n"); } fclose(archivo); return 1;

Archivos binarios Deben ser abiertos en modo binario. La información se guarda en formato binario. Si se abre el archivo con un editor de texto, aparece basura. Se pueden intercalar distintos tipos de datos

Archivos binarios fread Lee datos binarios desde un archivo size_t fread( void* buffer, size_t num_bytes, size_t cuenta, FILE* fp); Variable donde dejar la información leída Tamaño del tipo de dato unsigned int, Número de bytes leídos Numero de elementos A leer Flujo desde donde leer

Archivos binarios fwrite Escribe datos binarios a un archivo size_t fwrite( void* buffer, size_t num_bytes, size_t cuenta, FILE* fp); Variable desde donde tomar la información Tamaño del tipo de dato unsigned int, Número de bytes escritos Numero de elementos A escribir Flujo donde se debe escribir

Archivos binarios sizeof Entrega en numero de bytes que ocupa un tipo de dato Es un operador calculado en tiempo de compilación. sizeof(int) 4 int i; sizeof(i)  4

Archivos binarios void escribir(FILE* archivo){ archivo = fopen("test5.dat","w+b"); if(archivo!=NULL){ int i,k; k=1; for(i=0;i<10;i++){ size_t ws; ws = fwrite(&k,sizeof(k),1,archivo); k=k*2; printf("%d enteros escritos en %d bytes\n",ws, ws*sizeof(int)); } fclose(archivo);

Archivos binarios void leer(FILE* archivo){ archivo = fopen("test5.dat","r+b"); if(archivo!=NULL){ int i,k; while(fread(&k,sizeof(int),1,archivo)==1){ printf("%d\n",k); } fclose(archivo);

Archivos binarios int main(int argc, char* argv[]){ FILE* archivo; printf("%s",argv[1]); if(argc>1 && strcmp(argv[1],"w")==0) escribir(archivo); else leer(archivo); return 1; }

Archivos binarios Así como se puede leer y escribir datos simples, también se pueden leer y escribir datos estructurados. El esquema es el mismo, basta con especificar el tamaño correcto.

Archivos binarios struct pokemon{ char nombre[12]; int tipo; //0: fuego, 1:planta, //2:agua, 3:electrico double fuerza; double energia; };

Archivos binarios void escribir(FILE* archivo){ archivo = fopen("test6.dat","w+b"); if(archivo!=NULL){ int i,k; struct pokemon pk1, pk2, pk3; strcpy(pk1.nombre,"pikachu"); pk1.tipo=3; pk1.fuerza=120; pk1.energia=87; … fwrite(&pk1,sizeof(struct pokemon),1,archivo); fwrite(&pk2,sizeof(struct pokemon),1,archivo); fwrite(&pk3,sizeof(struct pokemon),1,archivo); fclose(archivo); }

Archivos binarios void escribir(FILE* archivo){ archivo = fopen("test6.dat","w+b"); if(archivo!=NULL){ int i,k; size_t wb; struct pokemon pk[3]; strcpy(pk[0].nombre,"pikachu"); pk[0].tipo=3; pk[0].fuerza=120; pk[0].energia=87; wb = fwrite(pk,sizeof(struct pokemon),3,archivo); printf("%d bytes escritos en %d elementos\n", wb*sizeof(struct pokemon), wb); fclose(archivo); }

Archivos binarios void leer(FILE* archivo){ printf("Leyendo\n"); archivo = fopen("test6.dat","r+b"); if(archivo!=NULL){ int i; struct pokemon pk; while(fread(&pk,sizeof(struct pokemon),1,archivo)==1){ printf("%s\n",pk.nombre); } fclose(archivo);

Archivos binarios En archivos binarios ya no es necesario realizar accesos secuenciales. Es muy natural realizar accesos a estructuras de datos especificas, tanto para lectura como para escritura.

Archivos binarios fseek Mueve el cursor de lectura escritura a una posición especifica del archivo int fseek(FILE* f, long nbytes, int origen); Cero en caso de éxito, distinto de cero en error Numero de bytes a mover el cursor Desde donde contar nbytes Descriptor de archivo

Archivos binarios fseek Origen: SEEK_SET: Principio del archivo SEEK_CUR: Posición actual SEEK_END: Fin del archivo

Archivos binarios ftell Indica la posición actual en el archivo (bytes respecto al inicio) long int ftell(FILE* f); Posición del archivo, -1 en caso de error. Descriptor de archivo

Archivos binarios void leern(FILE* archivo, int n){ printf("Leyendo %d\n",n); archivo = fopen("test6.dat","r+b"); if(archivo!=NULL){ int i; struct pokemon pk; fseek(archivo, n*sizeof(struct pokemon),SEEK_SET); fread(&pk,sizeof(struct pokemon),1,archivo); printf("%s\n",pk.nombre); fclose(archivo); }

Archivos binarios void leerrev(FILE* archivo){ archivo = fopen("test6.dat","r+b"); if(archivo!=NULL){ int i; struct pokemon pk; fseek(archivo,-1*sizeof(struct pokemon),SEEK_END); while(fread(&pk,sizeof(struct pokemon),1,archivo)==1){ printf("%s\n",pk.nombre); fseek(archivo,-2*sizeof(struct pokemon),SEEK_CUR); } fclose(archivo);

Manejo de archivos de datos en C Fin Tema 10c Manejo de archivos de datos en C