SlideShare una empresa de Scribd logo
2
Lo más leído
3
Lo más leído
4
Lo más leído
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 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
Flujo de datos en C

           FILE *archivo // flujo de datos

                    Flujo de datos




20/02/12          Programación avanzada y métodos numéricos   3
Flujos abiertos por defecto en stdio.h
FILE *stdin // entrada desde el teclado
FILE *stdout // salida hacia la pantalla
FILE *stderr // salida hacia la pantalla, usado
para mensajes de error


fprintf(stdout,“Dame un numero: ”); // sale
por stdout
fscanf(stdin,“%d”,&x); // Llega desde stdin
20/02/12     Programación avanzada y métodos numéricos   4
Abrir y cerrar archivo
FILE* arch = fopen(“credito.txt”,”r”);
if(arch == NULL) { // Manejo del error
  printf(“Hubo un error al abrir el
programan”);
     return 0;
}
fclose(arch); // Cierra el archivo
20/02/12         Programación avanzada y métodos numéricos   5
char arch1[20];

printf(“Dame el nombre del archivo: ”);
scanf(“%s”,arch1);

// Introducimos la dirección donde se
guarda la cadena con el nombre
FILE *ap_arch = fopen(arch1,”a”);

// después de manipular el archivo
fclose(ap_arch);
20/02/12   Programación avanzada y métodos numéricos   6
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

                       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 directo



20/02/12    Programación avanzada y métodos numéricos   8
Escritura y lectura de texto
fprintf(flujo, cadena del formato,
variables);
fscanf(flujo, cadena del formato,
direcciones de memoria de las
variables);
 Cada que se lee o escribe, el apuntador
  del flujo se recorre varias posiciones

20/02/12        Programación avanzada y métodos numéricos   9
Acceso secuencial a archivo de texto
feof(flujo) // Devuelve verdadero si
llegó al final del flujo
rewind(flujo) // Devuelve el
apuntador a la posición inicial del
archivo



20/02/12   Programación avanzada y métodos numéricos   10
Acceso secuencial a archivo de texto
int numero;
FILE *archivo = fopen(“datos.txt”,”r+”);
// Mientras archivo no apunte a EOF, seguirá el ciclo
while ( !feof(archivo) ) {
    fscanf(archivo,“%i”,&numero);
    printf(“Numero leido: %d”, numero);
    fprintf(archivo, “%d”, 0);
}
rewind(archivo); // devuelve a la posición inicial del flujo

20/02/12           Programación avanzada y métodos numéricos   11
Escritura y lectura de datos binarios en
                archivos
fwrite(dirección del buffer, tamaño del tipo
de dato, número de elementos, flujo);
fread(dirección del buffer, tamaño del tipo de
dato, numero de elementos, flujo);


También desplazan el apuntador del archivo
tantas posiciones como sean escritas o leídas


20/02/12     Programación avanzada y métodos numéricos   12
Acceso directo a archivo binario
fseek(flujo, desplazamiento en
bytes, 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
Acceso directo a archivo binario

FILE *flujo1 = fopen(“a.dat”,”w+b”);
int x[45];

// Desplazamiento y lectura
fseek(flujo1,30,SEEK_SET);
fread(x,sizeof(int),45,flujo1);

// Desplazamiento y escritura
fseek(flujo1,40*sizeof(float),SEEK_CUR);
fwrite(x,sizeof(int),45,flujo1);
20/02/12      Programación avanzada y métodos numéricos   14
Consideraciones para elaborar un
                 archivo
1) Cada línea de texto representará un
  registro, en caso de que sea binario, definir
  una estructura registro
2) En caso de que sea texto, especificar un
  formato de texto para cada registro, el cual
  será usado para escribir y leer
3) Es recomendable añadir un número o
  clave de identificación al inicio de cada
  registro para facilitar la búsqueda

20/02/12     Programación avanzada y métodos numéricos   15
Ejemplo
/* Formato de registro: entero, espacio, cadena,
espacio, cadena, espacio, flotante */
FILE *arch1, *arch2; // asuma que están abiertos
int 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
Ejemplo
struct registro {
   int cuenta; float balance;
   char nombre[20], apellido[20];
} aux;
FILE *arch1, *arch2; // asuma que están
abiertos
fread(&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
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

Más contenido relacionado

PPTX
Arquitectura harvard
DOCX
Conceptos Unidad 1 Lenguajes Automatas Introducción a la Teoría de Lenguaje...
DOCX
control de concurrencia
PPTX
REGISTRO DE BANDERAS
PPTX
Tipos de usuario en una Base de Datos
PPTX
Fundamentos de Ingenieria de Software - Unidad 1 modelo de negocios
PDF
Lectura 3 Modelo De Analisis
PPT
Jerarquia de chomsky
Arquitectura harvard
Conceptos Unidad 1 Lenguajes Automatas Introducción a la Teoría de Lenguaje...
control de concurrencia
REGISTRO DE BANDERAS
Tipos de usuario en una Base de Datos
Fundamentos de Ingenieria de Software - Unidad 1 modelo de negocios
Lectura 3 Modelo De Analisis
Jerarquia de chomsky

La actualidad más candente (20)

PDF
Lenguaje ensamblador basico
PPTX
Registros del cpu
DOCX
Pilas como estructura de datos..
TXT
Serie Fibonacci en C
DOCX
Arquitecturas de Cómputo
PPT
Notación infija postfija
PPSX
Ieee 830
PDF
Lógica y Algoritmos 4. estructuras secuenciales y selectivas
PPTX
Estructura de Datos - Unidad 6 Metodos de busqueda
PDF
Teoría De La Complejidad Algoritmica
PDF
9 Curso de POO en java - variables, constantes y objetos
PDF
Buses
PDF
Palabras Reservadas en C++
PPTX
arboles avl con codigo en java
PPTX
Fundamentos de Telecomunicaciones Unidad 5 Dispositivos de Comunicación
PPTX
Colas en programacion
PPTX
Ejercicios de normalizacion
PPTX
Tópicos Avanzados de Programación - Unidad 1 GUI
PPTX
Método de Búsqueda Hash
PPTX
macros Lenguaje ensamblador
Lenguaje ensamblador basico
Registros del cpu
Pilas como estructura de datos..
Serie Fibonacci en C
Arquitecturas de Cómputo
Notación infija postfija
Ieee 830
Lógica y Algoritmos 4. estructuras secuenciales y selectivas
Estructura de Datos - Unidad 6 Metodos de busqueda
Teoría De La Complejidad Algoritmica
9 Curso de POO en java - variables, constantes y objetos
Buses
Palabras Reservadas en C++
arboles avl con codigo en java
Fundamentos de Telecomunicaciones Unidad 5 Dispositivos de Comunicación
Colas en programacion
Ejercicios de normalizacion
Tópicos Avanzados de Programación - Unidad 1 GUI
Método de Búsqueda Hash
macros Lenguaje ensamblador
Publicidad

Similar a Manejo de archivos en el lenguaje C (20)

PPTX
Archivo de datos
PDF
PUNTEROS (APUNTADORES) EN C++
PDF
Archivos en c clase unsam
PPT
Objetivo 01 Archivos de Texto
PPT
Manejo_archivos.ppt
PDF
Archivos de datos en C
PDF
Manejo de archivos en c++
PDF
Manejo archivos
DOCX
Tarea pagweb
ODP
ARCHIVOS DEL LENGUAJE C
PPTX
Archivos C++
PDF
Archivos c
PDF
Archivos c
PDF
Manejo dearchivosc
PDF
Arreglos multidimensionales y de apuntadores
PDF
POO Unidad 4: Persistencia de objetos y manejo de archivos
PPTX
Manejo de archivos
PPTX
ARCHIVOS EN C+
ODP
Archivos en c
PDF
Manejo de archivosss
Archivo de datos
PUNTEROS (APUNTADORES) EN C++
Archivos en c clase unsam
Objetivo 01 Archivos de Texto
Manejo_archivos.ppt
Archivos de datos en C
Manejo de archivos en c++
Manejo archivos
Tarea pagweb
ARCHIVOS DEL LENGUAJE C
Archivos C++
Archivos c
Archivos c
Manejo dearchivosc
Arreglos multidimensionales y de apuntadores
POO Unidad 4: Persistencia de objetos y manejo de archivos
Manejo de archivos
ARCHIVOS EN C+
Archivos en c
Manejo de archivosss
Publicidad

Último (20)

PDF
Integrando la Inteligencia Artificial Generativa (IAG) en el Aula
PDF
Unidad de Aprendizaje 5 de Matematica 2do Secundaria Ccesa007.pdf
PDF
Escuelas Desarmando una mirada subjetiva a la educación
PDF
el - LIBRO-PACTO-EDUCATIVO-GLOBAL-OIEC.pdf
DOCX
Informe_practica pre Final.docxddadssasdddddddddddddddddddddddddddddddddddddddd
PDF
EL aprendizaje adaptativo bajo STEM+H.pdf
PDF
Mi Primer Millon - Poissant - Godefroy Ccesa007.pdf
DOC
Manual de Convivencia 2025 actualizado a las normas vigentes
PDF
MATERIAL DIDÁCTICO 2023 SELECCIÓN 1_REFORZAMIENTO 1° BIMESTRE_COM.pdf
PDF
2.0 Introduccion a processing, y como obtenerlo
PDF
Como Potenciar las Emociones Positivas y Afrontar las Negativas Ccesa007.pdf
PDF
Atencion prenatal. Ginecologia y obsetricia
PDF
La Inteligencia Emocional - Fabian Goleman TE4 Ccesa007.pdf
PDF
Tomo 1 de biologia gratis ultra plusenmas
PDF
1. Intrdoduccion y criterios de seleccion de Farm 2024.pdf
PDF
LIBRO 2-SALUD Y AMBIENTE-4TO CEBA avanzado.pdf
PDF
Aumente su Autoestima - Lair Ribeiro Ccesa007.pdf
PPTX
LAS MIGRACIONES E INVASIONES Y EL INICIO EDAD MEDIA
PDF
TOMO II - LITERATURA.pd plusenmas ultras
DOCX
V UNIDAD - PRIMER GRADO. del mes de agosto
Integrando la Inteligencia Artificial Generativa (IAG) en el Aula
Unidad de Aprendizaje 5 de Matematica 2do Secundaria Ccesa007.pdf
Escuelas Desarmando una mirada subjetiva a la educación
el - LIBRO-PACTO-EDUCATIVO-GLOBAL-OIEC.pdf
Informe_practica pre Final.docxddadssasdddddddddddddddddddddddddddddddddddddddd
EL aprendizaje adaptativo bajo STEM+H.pdf
Mi Primer Millon - Poissant - Godefroy Ccesa007.pdf
Manual de Convivencia 2025 actualizado a las normas vigentes
MATERIAL DIDÁCTICO 2023 SELECCIÓN 1_REFORZAMIENTO 1° BIMESTRE_COM.pdf
2.0 Introduccion a processing, y como obtenerlo
Como Potenciar las Emociones Positivas y Afrontar las Negativas Ccesa007.pdf
Atencion prenatal. Ginecologia y obsetricia
La Inteligencia Emocional - Fabian Goleman TE4 Ccesa007.pdf
Tomo 1 de biologia gratis ultra plusenmas
1. Intrdoduccion y criterios de seleccion de Farm 2024.pdf
LIBRO 2-SALUD Y AMBIENTE-4TO CEBA avanzado.pdf
Aumente su Autoestima - Lair Ribeiro Ccesa007.pdf
LAS MIGRACIONES E INVASIONES Y EL INICIO EDAD MEDIA
TOMO II - LITERATURA.pd plusenmas ultras
V UNIDAD - PRIMER GRADO. del mes de agosto

Manejo de archivos en el lenguaje C

  • 1. Archivos y Bancos de Datos
  • 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. Flujo de datos en C FILE *archivo // flujo de datos Flujo de datos 20/02/12 Programación avanzada y métodos numéricos 3
  • 4. Flujos abiertos por defecto en stdio.h FILE *stdin // entrada desde el teclado FILE *stdout // salida hacia la pantalla FILE *stderr // salida hacia la pantalla, usado para mensajes de error fprintf(stdout,“Dame un numero: ”); // sale por stdout fscanf(stdin,“%d”,&x); // Llega desde stdin 20/02/12 Programación avanzada y métodos numéricos 4
  • 5. Abrir y cerrar archivo FILE* arch = fopen(“credito.txt”,”r”); if(arch == NULL) { // Manejo del error printf(“Hubo un error al abrir el programan”); return 0; } fclose(arch); // Cierra el archivo 20/02/12 Programación avanzada y métodos numéricos 5
  • 6. char arch1[20]; printf(“Dame el nombre del archivo: ”); scanf(“%s”,arch1); // Introducimos la dirección donde se guarda la cadena con el nombre FILE *ap_arch = fopen(arch1,”a”); // después de manipular el archivo fclose(ap_arch); 20/02/12 Programación avanzada y métodos numéricos 6
  • 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. 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 directo 20/02/12 Programación avanzada y métodos numéricos 8
  • 9. Escritura y lectura de texto fprintf(flujo, cadena del formato, variables); fscanf(flujo, cadena del formato, direcciones de memoria de las variables); Cada que se lee o escribe, el apuntador del flujo se recorre varias posiciones 20/02/12 Programación avanzada y métodos numéricos 9
  • 10. Acceso secuencial a archivo de texto feof(flujo) // Devuelve verdadero si llegó al final del flujo rewind(flujo) // Devuelve el apuntador a la posición inicial del archivo 20/02/12 Programación avanzada y métodos numéricos 10
  • 11. Acceso secuencial a archivo de texto int numero; FILE *archivo = fopen(“datos.txt”,”r+”); // Mientras archivo no apunte a EOF, seguirá el ciclo while ( !feof(archivo) ) { fscanf(archivo,“%i”,&numero); printf(“Numero leido: %d”, numero); fprintf(archivo, “%d”, 0); } rewind(archivo); // devuelve a la posición inicial del flujo 20/02/12 Programación avanzada y métodos numéricos 11
  • 12. Escritura y lectura de datos binarios en archivos fwrite(dirección del buffer, tamaño del tipo de dato, número de elementos, flujo); fread(dirección del buffer, tamaño del tipo de dato, numero de elementos, flujo); También desplazan el apuntador del archivo tantas posiciones como sean escritas o leídas 20/02/12 Programación avanzada y métodos numéricos 12
  • 13. Acceso directo a archivo binario fseek(flujo, desplazamiento en bytes, 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. Acceso directo a archivo binario FILE *flujo1 = fopen(“a.dat”,”w+b”); int x[45]; // Desplazamiento y lectura fseek(flujo1,30,SEEK_SET); fread(x,sizeof(int),45,flujo1); // Desplazamiento y escritura fseek(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. Consideraciones para elaborar un archivo 1) Cada línea de texto representará un registro, en caso de que sea binario, definir una estructura registro 2) En caso de que sea texto, especificar un formato de texto para cada registro, el cual será usado para escribir y leer 3) Es recomendable añadir un número o clave de identificación al inicio de cada registro para facilitar la búsqueda 20/02/12 Programación avanzada y métodos numéricos 15
  • 16. Ejemplo /* Formato de registro: entero, espacio, cadena, espacio, cadena, espacio, flotante */ FILE *arch1, *arch2; // asuma que están abiertos int 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. Ejemplo struct registro { int cuenta; float balance; char nombre[20], apellido[20]; } aux; FILE *arch1, *arch2; // asuma que están abiertos fread(&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. 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