Professional Documents
Culture Documents
Ciclo: 2014-II
Archivo en C
1. Introduccin
El sistema de archivos ANSI C se compone de varias funciones interrelacionadas. Las ms comunes se
muestran a continuacin:
Nombre
Funcin
fopen
Abre un archivo
fclose
Cierra un archivo
fputc
fgetc
fseek
fprintf
fscanf
feof
ferror
rewind
remove
Elimina el archivo
Tabla 1 Funciones ms comunes del sistema de archivo
Estas funciones requieren que se incluya la librera de cabecera stdio.h en cualquier programa en que
se vaya a utilizar.
2. El Puntero a Archivo
El puntero a archivo es el hilo comn que unifica el sistema de E/S con buffer. Un puntero a un archivo
es un puntero a una informacin que define varias cosas sobre l, incluyendo su nombre, su estado y
su posicin final. En esencia, el puntero a archivo identifica un archivo de disco especfico y lo utiliza
el flujo asociado para dirigir el funcionamiento de las funciones de E/S con buffer. Un puntero a archivo
es una variable de tipo puntero FILE, que est definido es stdio.h.
3. Funciones principales en Archivos
fopen:
Abre un flujo para que pueda ser utilizado, lo asocia a un archivo y despus devuelve el puntero
FILE de ese flujo.
Sintaxis:
FILE *fopen(char *nombre_archivo,char modo);
En donde:
Nombre_archivo: Una cadena que contiene un nombre de fichero vlido. El nombre puede incluir
el camino completo.
Ciclo: 2014-II
Modo: Especifica en tipo de fichero que se abrir o se crear y el tipo de datos que puede contener,
de texto o binarios:
Modo
Significado
rb
wb
r+
w+
a+
rb+
wb+
fclose
Cierra el flujo que fue abierto mediante una llamada a fopen( ). Escribe toda la informacin que
todava se encuentra en el buffer del disco al archivo y realiza un cierre formal del archivo a nivel
de sistema operativo.
Sintaxis:
int fclose(FILE *Archivo);
fputc
Escribe caracteres en un flujo que haya sido abierto previamente para operaciones de escritura
utilizando la funcin fopen.
Sintaxis:
int fputc( int carcter, FILE * Archivo);
#include <stdio.h>
void main ()
{
FILE *fp;
char caracter;
fp = fopen ("fichero.txt", "r+" );
printf("\nIntrouce un texto al fichero: ");
while((caracter = getchar()) != '\n')
{
printf("%c", fputc(caracter, fp));
}
fclose (fp);
}
Ciclo: 2014-II
Ciclo: 2014-II
#include <stdio.h>
int main()
{
int tamanyo=0;
FILE *ficheroEntrada, *ficheroSaliada;
char nombreEntrada[11]="datos2.dat", nombreSalida[11]="datos3.dat";
ficheroEntrada = fopen( nombreEntrada, "r" );
printf( "Fichero de Lectura: %s -> ", nombreEntrada );
if( ficheroEntrada )
printf( "existe (ABIERTO)\n" );
else
{
printf( "Error (NO ABIERTO)\n" );
return 1;
}
ficheroSalida = fopen( nombreSalida, "w" );
printf( "Fichero de Lectura: %s -> ", nombreSalida );
if( ficheroSalida )
printf( "creado (ABIERTO)\n" );
else
{
printf( "Error (NO ABIERTO)\n" );
return 1;
}
while( !feof(ficheroEntrada) )
{
fputc( fgetc(ficheroEntrada)+3, ficheroSalida ); /* Desplazar cada carcter 3 caracteres: a -> d, b -> e, ... */
tamanyo++;
}
printf( "El fichero \'%s\' contiene %d caracteres.\n", nombreEntrada, tamanyo );
if( !fclose(ficheroSalida) )
printf( "Fichero: %s cerrado\n", nombreSalida );
else
{
printf( "Error: fichero: %s NO CERRADO\n", nombreSalida );
return 1;
}
if( !fclose(ficheroEntrada) )
printf( "Fichero: %s cerrado\n", nombreEntrada );
else
{
printf( "Error: fichero: %s NO CERRADO\n", nombreEntrada );
return 1;
}
return 0;
}
fread
Lee bloques de datos. Esta funcin est pensada para trabajar con registros de longitud constante.
Es capaz de leer desde un fichero uno o varios registros de la misma longitud y a partir de una
direccin de memoria determinada.
Ciclo: 2014-II
Sintaxis:
size_t fread(void *buffer, size_t num_bytes, size_t cuenta, FILE *Archivo);
Lectura de datos por campo de registro
fread(&l.codigo,sizeof(char),5,arch);
En esta sentencia se est leyendo desde el archivo arch una variable de la estructura Libro.
Lectura de datos por bloque
fread(&l,sizeof(libro),1,arch);
En esta sentencia se est leyendo desde el archivo arch un registro, es decir un libro cuyos campos
son cdigo, titulo, autor, npag.
fwrite
Escribe bloques de datos. Esta funcin tambin est pensada para trabajar con registros de longitud
constante y forma pareja con fread. Es capaz de escribir hacia un fichero uno o varios registros de
la misma longitud almacenados a partir de una direccin de memoria determinada.
Sintaxis:
size_t fwrite(void *buffer, size_t num_bytes, size_t cuenta, FILE *Archivo);
Grabacin de datos por campo de registro
fwrite(&l.codigo,sizeof(char),5,arch);
En esta sentencia se est grabado al archivo arch una variable de la estructura Libro.
Grabacin de datos por bloque
fwrite(&l,sizeof(libro),1,arch);
En esta sentencia se est grabando al archivo arch un registro, es decir un libro cuyos campos son
cdigo, titulo, autor, npag
Ciclo: 2014-II
ferror
Determina si se ha producido un error en una operacin sobre un archivo.
Sintaxis:
int ferror(FILE *Archivo);
rewind
Inicializa el indicador de posicin al principio del archivo indicado por su argumento
Sintaxis:
void rewind( FILE *Archivo);
Ciclo: 2014-II
Descripcin
Crear un programa que realice el proceso de venta de una farmacia, para lo cual se debe de analizar
en base a listas haciendo uso de struct, la elaboracin de este proyecto de investigacin tiene como
finalidad que el alumno combine las diferentes listas estudiadas en clase y tambin hacer uso de
archivos en C como una simulacin de una Base de Datos.
Modulo a Implementar
A continuacin se detallan los modulo que debe contar el proyecto:
a) Mantenimiento: En este mdulo se podr realizar las inserciones y modificaciones de las
listas que necesitan dar mantenimiento para luego usar los datos en el proceso principal de
negocio.
b) Consultas: En este mdulo se podrn realizar todas las consultas posibles y necesarias de los
datos.
c) Listados: En este mdulo se podr visualizar segn la lista elegida los datos, presentar en
forma horizontal (usar funcin gotoxy);
d) Proceso Principal del negocio (ventas): Viene a ser el modulo principal por el cual gira el
negocio, es decir se tendr que realizar todas las validaciones posibles para poder llevar a cabo
el proceso de venta, para lo cual se debe trabajar con los datos anteriormente ingresados.
e) Reportes: En este mdulo se podr visualizar los reportes ms importantes para la Empresa
(farmacia), como mnimo se debe contar con 04(cuatro) reportes.
Nota:
A parte de estos modulo implementados, agregar una opcin dentro del men principal con el
nombre de Integrantes, en la cual se mostraran los integrantes que forman el grupo.
Entrega y Exposicin
El proyecto estar formado como mximo de 04(cuatro) alumnos
Para la entrega y exposicin de proyecto se realizar el da 23 de marzo del presente ao.
El proyecto ser entregado en una carpeta el cual debe llevar los apellidos del coordinador del
grupo (Ejemplo: nombre de carpeta Perez_Lopez usar el carcter _)
Al momento de la entrega y explicacin las listas deben de contener datos (Archivos).