Author
pablo-abril
View
218
Download
0
Embed Size (px)
ArchivosArchivos
Para comenzar a utilizar un archivo primero se debe abrir, invocando a la función fopen(...)fopen(...)
FILE * fopen(char* nombre_arch, char* modo)FILE * fopen(char* nombre_arch, char* modo)
Donde:
es una estructura que contiene toda la información necesaria para emplear el archivo.
FILEFILE
typedef struct {
short level; /* nivel de ocupación del buffer */
unsigned flags; /* indicadores de control */
char fd; /* descriptor del fichero */
unsigned char hold; /* carácter de ungetch()*/
short bsize; /* tamaño de buffer */
unsigned char *buffer, *curp;
/* puntero al buffer */ /* posición en curso */
unsigned istemp;
short token; /* se emplea para control */
} FILE; /* tipo FILE */
Modo:Modo:
Es una cadena de caracteres que indica la forma en que se va utilizar el archivo.
““r”r” Abre un archivo de texto para leer.
““w”w” Abre un archivo de texto para escribir.
““a”a” Abre un archivo de texto para añadir al final.
““wb”wb” Abre un archivo binario para escribir.
““ab”ab” Abre un archivo binario para añadir al final.
““rb”rb” Abre un archivo binario para leer.
““w+b”w+b” Crea un archivo binario para leer y escribir.
““r+b”r+b” Abre un archivo binario para leer y escribir.
Si la función no tiene problemas al abrir el fichero devuelve un puntero a FILE que apunta al canal asociado.
Si encuentra errores, por ejemplo una protección de escritura o disco lleno devuelve un puntero NULO.
Para cerrar un archivo se utiliza la función fclosefclose.
int fclose(FILE * nombre_arch)int fclose(FILE * nombre_arch)
Donde:
nombre_archnombre_arch
Es un puntero al archivo que se quiere cerrar.
Devuelve 0 cuando no hay errores.
Cualquier otro valor indica error.
Para reconocer el fin de archivo se utiliza la función feof(...)feof(...)
int feof ( FILE * fp )int feof ( FILE * fp )
Devuelve 0 si nono ha llegado al final del archivo.
En caso contrario devuelve un valor distinto de 0.
Escritura de caracteresEscritura de caracteres
int fputc(int ch, FILE * fp)int fputc(int ch, FILE * fp)
Si no hay errores devuelven el carácter escrito.
Si hay algún error devuelve EOF.
Escritura de caracteresEscritura de caracteres
int fgetc( FILE * fp)int fgetc( FILE * fp)
Si no hay errores devuelve el carácter leído.
Si hay algún error devuelve EOF.
Escritura y lectura de cadena de Escritura y lectura de cadena de caracterescaracteres
int fputs(char* str, FILE * fp)int fputs(char* str, FILE * fp)Escribe una cadena de caracteres en un archivo.
char fgets(char* str, FILE * fp)char fgets(char* str, FILE * fp)
Lee una cadena de caracteres de un archivo hasta que encuentre fin de línea.
Archivos de acceso Archivos de acceso directodirecto
Los registros son de longitud fija.
Se puede acceder a ellos directamente, sin tener que buscar a través de otros registros.
Los datos pueden ser insertados sin destruir otros datos en el archivo.
Los datos almacenados anteriormente también pueden ser actualizados o borrados; sin tener que reescribir todo el archivo.
Lectura y escritura Lectura y escritura de un bloque de de un bloque de
informacióninformaciónExisten dos funciones que permiten leer y escribir bloques de información en un archivo.
La función freadLa función fread
Transfiere un número especificado de bytes de la posición en el archivo, especificado por el apuntador de posición de archivo, a un área en memoria empezando a partir de una dirección especificada.
int fread(int fread( void* buffer, void* buffer, intint num_bytes,num_bytes,int contador, FILE* fp) int contador, FILE* fp)
Donde:buffer:buffer: Es un puntero que señala a
una zona de memoria que va a recibir los datos del archivo.
num_bytes:num_bytes:Es el número de bytes que se van a leer.
contador:contador: indica el número de veces que se efectua la lectura.
fp:fp: es el puntero al archivo.
La función fwriteLa función fwrite
Transfiere a un archivo un número especificado de bytes empezando en una posición especificada de memoria.
int fwrite(int fwrite( void* buffer, void* buffer, int num_bytes, int num_bytes, int contador, FILE* fp)int contador, FILE* fp)
Donde:
buffer:buffer: Es un puntero que apunta a la información que se escribirá en el archivo.
num_bytes:num_bytes:
Es el número de bytes que se escriben.
contador:contador: indica el número de veces que se efectua la escritura.
fp:fp: es el puntero al archivo.
La función fseekLa función fseek
Permite realizar accesos directos sobre un archivo.
num_bytes:num_bytes:Es el número de bytes necesarios, desde el orígen, para acceder a la posición deseada.
int fseek(int fseek( FILE* fp,FILE* fp,long int num_bytes, long int num_bytes, int origen)int origen)Donde:
fp:fp: Es un puntero al archivo que se desea acceder.
Origen:Origen: Es una de estas macros:
MACRO ORIGEN VALOR
SEEK_SET Desde el principio del archivo.
0
SEEK_CUR Desde la posición actual.
1
SEEK_END Desde el final del archivo.
2
Estas macros corresponden a valores enteros e indican desde qué posición se comienza a sumar num_bytes para hallar la posición final.
fseek devuelve 0
cuando no hay errores,
en caso contrario
devuelve un valor diferente de cero
Normalmente se utiliza fseek con archivos binarios.
Ejemplo:Ejemplo:
fseek(fp, (long) 5, SEEK_SET);
Coloca el indicador de posición en el sexto byte del archivo apuntado por fp.
fseek(fp, 5L, SEEK_SET);