Archivos y Bancos de Datos
Flujo de datos   Es una abstracción del camino que siguen    los datos desde alguna fuente (dispositivos    de entrada o ...
Flujo de datos en C           FILE *archivo // flujo de datos                    Flujo de datos20/02/12          Programac...
Flujos abiertos por defecto en stdio.hFILE *stdin // entrada desde el tecladoFILE *stdout // salida hacia la pantallaFILE ...
Abrir y cerrar archivoFILE* arch = fopen(“credito.txt”,”r”);if(arch == NULL) { // Manejo del error  printf(“Hubo un error ...
char arch1[20];printf(“Dame el nombre del archivo: ”);scanf(“%s”,arch1);// Introducimos la dirección donde seguarda la cad...
Modos de abrir un archivo       “r”            Abre en modo lectura un archivo               Crea archivo para escribir o ...
                       De texto: los datos                      están guardados en Tipos de             cadenas de texto,...
Escritura y lectura de textofprintf(flujo, cadena del formato,variables);fscanf(flujo, cadena del formato,direcciones de m...
Acceso secuencial a archivo de textofeof(flujo) // Devuelve verdadero sillegó al final del flujorewind(flujo) // Devuelve ...
Acceso secuencial a archivo de textoint numero;FILE *archivo = fopen(“datos.txt”,”r+”);// Mientras archivo no apunte a EOF...
Escritura y lectura de datos binarios en                archivosfwrite(dirección del buffer, tamaño del tipode dato, númer...
Acceso directo a archivo binariofseek(flujo, desplazamiento enbytes, origen);Origen: SEEK_SET (inicio del archivo) SEEK_...
Acceso directo a archivo binarioFILE *flujo1 = fopen(“a.dat”,”w+b”);int x[45];// Desplazamiento y lecturafseek(flujo1,30,S...
Consideraciones para elaborar un                 archivo1) Cada línea de texto representará un  registro, en caso de que s...
Ejemplo/* Formato de registro: entero, espacio, cadena,espacio, cadena, espacio, flotante */FILE *arch1, *arch2; // asuma ...
Ejemplostruct registro {   int cuenta; float balance;   char nombre[20], apellido[20];} aux;FILE *arch1, *arch2; // asuma ...
Bibliografía    Luis Joyanes e Ignacio Zahonero.    Programación en C, C++, Java y UML. Ed.    McGraw Hill Latinoamerican...
Próxima SlideShare
Cargando en…5
×

Manejo de archivos en el lenguaje C

19.269 visualizaciones

Publicado el

Diapositivas correspondientes al tema 1.3 de Programación avanzada y métodos numéricos, impartida en la Facultad de Ingeniería de la UNAM.

Publicado en: Educación
0 comentarios
2 recomendaciones
Estadísticas
Notas
  • Sé el primero en comentar

Sin descargas
Visualizaciones
Visualizaciones totales
19.269
En SlideShare
0
De insertados
0
Número de insertados
6
Acciones
Compartido
0
Descargas
316
Comentarios
0
Recomendaciones
2
Insertados 0
No insertados

No hay notas en la diapositiva.

Manejo de archivos en el lenguaje C

  1. 1. Archivos y Bancos de Datos
  2. 2. Flujo de datos Es una abstracción del camino que siguen los datos desde alguna fuente (dispositivos de entrada o el programa) hasta un destino (el programa o dispositivos de salida) [Joyanes y Zahonero] A la fuente se le llama productor, al destino se le llama consumidor Esta abstracción es usada en varios lenguajes de programación, incluyendo el lenguaje C
  3. 3. Flujo de datos en C FILE *archivo // flujo de datos Flujo de datos20/02/12 Programación avanzada y métodos numéricos 3
  4. 4. Flujos abiertos por defecto en stdio.hFILE *stdin // entrada desde el tecladoFILE *stdout // salida hacia la pantallaFILE *stderr // salida hacia la pantalla, usadopara mensajes de errorfprintf(stdout,“Dame un numero: ”); // salepor stdoutfscanf(stdin,“%d”,&x); // Llega desde stdin20/02/12 Programación avanzada y métodos numéricos 4
  5. 5. Abrir y cerrar archivoFILE* arch = fopen(“credito.txt”,”r”);if(arch == NULL) { // Manejo del error printf(“Hubo un error al abrir elprograman”); return 0;}fclose(arch); // Cierra el archivo20/02/12 Programación avanzada y métodos numéricos 5
  6. 6. char arch1[20];printf(“Dame el nombre del archivo: ”);scanf(“%s”,arch1);// Introducimos la dirección donde seguarda la cadena con el nombreFILE *ap_arch = fopen(arch1,”a”);// después de manipular el archivofclose(ap_arch);20/02/12 Programación avanzada y métodos numéricos 6
  7. 7. Modos de abrir un archivo “r” Abre en modo lectura un archivo Crea archivo para escribir o lo sobreescribe si “w” ya existe “a” Abre para añadir datos al final del archivo Abre para leer y escribir un archivo, “r+” manteniendo su contenido Crea archivo para escribir y leer o lo “w+” sobreescribe “a+” Abre para escribir y leer al final del archivo Al agregar b, se abre el archivo en modo “b” binario (“rb”, “ab”, “w+b”, “a+b”)20/02/12 Programación avanzada y métodos numéricos 7
  8. 8.  De texto: los datos están guardados en Tipos de cadenas de texto, el acceso es secuencial archivos  Binarios: los datos están guardados en bits, el acceso es directo20/02/12 Programación avanzada y métodos numéricos 8
  9. 9. Escritura y lectura de textofprintf(flujo, cadena del formato,variables);fscanf(flujo, cadena del formato,direcciones de memoria de lasvariables); Cada que se lee o escribe, el apuntador del flujo se recorre varias posiciones20/02/12 Programación avanzada y métodos numéricos 9
  10. 10. Acceso secuencial a archivo de textofeof(flujo) // Devuelve verdadero sillegó al final del flujorewind(flujo) // Devuelve elapuntador a la posición inicial delarchivo20/02/12 Programación avanzada y métodos numéricos 10
  11. 11. Acceso secuencial a archivo de textoint numero;FILE *archivo = fopen(“datos.txt”,”r+”);// Mientras archivo no apunte a EOF, seguirá el ciclowhile ( !feof(archivo) ) { fscanf(archivo,“%i”,&numero); printf(“Numero leido: %d”, numero); fprintf(archivo, “%d”, 0);}rewind(archivo); // devuelve a la posición inicial del flujo20/02/12 Programación avanzada y métodos numéricos 11
  12. 12. Escritura y lectura de datos binarios en archivosfwrite(dirección del buffer, tamaño del tipode dato, número de elementos, flujo);fread(dirección del buffer, tamaño del tipo dedato, numero de elementos, flujo);También desplazan el apuntador del archivotantas posiciones como sean escritas o leídas20/02/12 Programación avanzada y métodos numéricos 12
  13. 13. Acceso directo a archivo binariofseek(flujo, desplazamiento enbytes, origen);Origen: SEEK_SET (inicio del archivo) SEEK_CUR (posición actual) SEEK_END (final del archivo)20/02/12 Programación avanzada y métodos numéricos 13
  14. 14. Acceso directo a archivo binarioFILE *flujo1 = fopen(“a.dat”,”w+b”);int x[45];// Desplazamiento y lecturafseek(flujo1,30,SEEK_SET);fread(x,sizeof(int),45,flujo1);// Desplazamiento y escriturafseek(flujo1,40*sizeof(float),SEEK_CUR);fwrite(x,sizeof(int),45,flujo1);20/02/12 Programación avanzada y métodos numéricos 14
  15. 15. Consideraciones para elaborar un archivo1) Cada línea de texto representará un registro, en caso de que sea binario, definir una estructura registro2) En caso de que sea texto, especificar un formato de texto para cada registro, el cual será usado para escribir y leer3) Es recomendable añadir un número o clave de identificación al inicio de cada registro para facilitar la búsqueda20/02/12 Programación avanzada y métodos numéricos 15
  16. 16. Ejemplo/* Formato de registro: entero, espacio, cadena,espacio, cadena, espacio, flotante */FILE *arch1, *arch2; // asuma que están abiertosint cuenta; float balance;char nombre[20], apellido[20];fprintf(arch, “%d %s %s %0.2f”, cuenta, nombre,apellido, balance);fscanf(arch, “%d %s %s-%lf”, &cuenta, nombre,apellido, &balance);20/02/12 Programación avanzada y métodos numéricos 16
  17. 17. Ejemplostruct registro { int cuenta; float balance; char nombre[20], apellido[20];} aux;FILE *arch1, *arch2; // asuma que estánabiertosfread(&aux, sizeof(struct registro), 1, arch1);fwrite(&aux, sizeof(struct registro), 1, arch2);20/02/12 Programación avanzada y métodos numéricos 17
  18. 18. Bibliografía Luis Joyanes e Ignacio Zahonero. Programación en C, C++, Java y UML. Ed. McGraw Hill Latinoamericana. Harvey Deitel y Paul Deitel, Como programar en C. Ed. Prentice Hall.20/02/12 Programación avanzada y métodos numéricos 18

×