P. 1
Manejo de Archivos en Lenguaje C

Manejo de Archivos en Lenguaje C

|Views: 146|Likes:
Published by tigerfenix

More info:

Published by: tigerfenix on May 04, 2012
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

04/27/2013

pdf

text

original

Universidad Gran Mariscal De Ayacucho Facultad de Ingeniería Escuela de Informática Barcelona, Edo.

Anzoátegui

Facilitador: Manuel Carrasquero

Participante: Héctor A. Tablero C.I. 18.127.311

Barcelona, 15 de Marzo de 2012

Un valor de retorno cero indica que el fichero ha sido correctamente cerrado. "r+" : abrir un archivo para lectura y escritura. si ha habido algún error. "a" : abrir un archivo para escritura al final del contenido. El prototipo correspondiente de fopen es: FILE * fopen (const char *filename. que es para la lectura. fclose Esta función sirve para poder cerrar un fichero que se ha abierto.in". fclose ( fp ). "r" ). char** argv) { FILE *fp. el valor de retorno es la constante EOF. return 0. Tablero .h> int main(int argc. por eso es necesario comprobar que el archivo fue abierto con Manejo Básico de Archivos en Lenguaje C Héctor A. en el ejemplo se utilizó el opentype "r".in en modo lectura: #include <stdio. Los parámetros de entrada de fopen son:   filename: una cadena que contiene un nombre de fichero válido. Otra aspecto importante es que el lenguaje C no tiene dentro de sí una estructura para el manejo de excepciones o de errores. opentype: especifica el tipo de fichero que se abrirá o se creará. Una lista de parámetros opentype para la función fopen son:       "r" : abrir un archivo para lectura. "w" : abrir un archivo para escritura. El prototipo correspondiente de fclose es: int fclose (FILE *stream). si no existe se crea. el fichero debe existir. se crea si no existe o se sobreescribe si existe. "w+" : crear un archivo para lectura y escritura. Un ejemplo pequeño para abrir y cerrar el archivo llamado fichero. } Como vemos. fp = fopen ( "fichero. se crea si no existe o se sobreescribe si existe. const char *opentype). "a+" : abrir/crear un archivo para lectura y escritura al final del contenido.fopen Esta función sirve para abrir y crear ficheros en disco. el fichero debe existir.

fread Esta función lee un bloque de una "stream" de datos. .). pero este método no ofrece la misma seguridad (en especial al tratar con los archivos "binarios"). count : Número de elementos. size_t fread ( void * ptr. abrimos el documento "fichero. Existe otra forma de verificar el final del archivo que es comparar el caracter que trae fgetc del archivo con el macro EOF declarado dentro de stdio. fscanf La función fscanf funciona igual que scanf en cuanto a parámetros. El prototipo correspondiente de feof es: int feof(FILE *fichero). feof Esta función sirve para determinar si el cursor dentro del archivo encontró el final (end of file). size_t count. El prototipo correspondiente de fscanf es: int fscanf(FILE *fichero. stream: Puntero a objetos FILE. que especifica la cadena de entrada. Efectúa la lectura de un arreglo de elementos "count". const char *formato. los cuales tienen un tamaño "size". de lo contrario regresará un valor distinto de cero (Verdadero). FILE * stream ).. El indicador de posición de la cadena de caracteres avanza hasta leer la totalidad de bytes. Luego los guarda en el bloque de memoria especificado por "ptr". Tablero . argumento.. Parámetros:     ptr : Puntero a un bloque de memoria con un tamaño mínimo de (size*count) bytes. cada uno de los cuales tiene un tamaño definido por "size". Si fopen pudo abrir el archivo con éxito devuelve la referencia al archivo (FILE *). Si esto es exitoso la cantidad de bytes leídos es (size*count).h. Podemos ver un ejemplo de su uso. pero la entrada se toma de un fichero en lugar del teclado. size_t size.txt" en modo lectura y leyendo dentro de él: Manejo Básico de Archivos en Lenguaje C Héctor A. size : Tamaño en bytes de cada elemento (de los que voy a leer). La función feof siempre devolverá cero (Falso) si no es encontrado EOF en el archivo. de lo contrario devuelve NULL y en este caso se deberá revisar la dirección del archivo o los permisos del mismo.éxito "if (fp == NULL)".

fclose ( fp ).txt". return 0. size_t tamano. char **argv ) { FILE *fp.h> int main ( int argc. fp = fopen ( "fichero. Un ejemplo concreto del uso de fwrite con su contraparte fread y usando funciones es: /* * * */ FicheroCompleto.c Copyright 2009 Julio César Brizuela #include <stdio. el número de registros a escribir y un puntero a la estructura FILE del fichero al que se hará la escritura. Manejo Básico de Archivos en Lenguaje C Héctor A. struct sRegistro { char Nombre[25].h> void void void void menu(). } fwrite Esta función está pensada para trabajar con registros de longitud constante y forma pareja con fread. Los parámetros son: un puntero a la zona de memoria de donde se obtendrán los datos a escribir. VerDatos(FILE *Fichero).#include <stdio. printf("%s". InsertarDatos(FILE *Fichero). int Edad. "%s" . el tamaño de cada registro. float Sueldo. size_t cantidad. Tablero . no el número de bytes. FILE *archivo). char buffer[100]. Es capaz de escribir hacia un fichero uno o varios registros de la misma longitud almacenados a partir de una dirección de memoria determinada. CrearFichero(FILE *Fichero). "r" ). El valor de retorno es el número de registros escritos. } registro. El prototipo correspondiente de fwrite es: size_t fwrite(void *puntero.buffer). fscanf(fp.buffer).

printf("\n\t1. printf("\n\t3. "w"). "r"). printf("\nArchivo creado!"). case 4: exit = 1. break. switch(opcion) { case 1: CrearFichero(fichero). FILE *fichero. printf("\n\t4. case 3: VerDatos(fichero). } } return 0. case 2: InsertarDatos(fichero). Crear fichero"). int exit = 0. Ver datos"). default: printf("\nopcion no valida"). Salir"). while (!exit) { menu(). break. } void menu() { printf("\nMenu:"). break.int main() { int opcion. } Manejo Básico de Archivos en Lenguaje C Héctor A. Tablero . scanf("%d". } void CrearFichero(FILE *Fichero) { Fichero = fopen("fichero". break. printf("\n\t2. } else { printf("\nEl fichero ya existe!"). if(!Fichero) { Fichero = fopen("fichero". &opcion). printf("\nOpcion: "). Insertar datos").

sizeof(struct sRegistro). registro. Fichero).Edad. registro. 1. } fclose(Fichero). return. scanf("%s". Fichero = fopen("fichero". "r"). return. fclose(Fichero). return. numero++. numero.Sueldo).Nombre. scanf("%f". sizeof(struct sRegistro). } void InsertarDatos(FILE *Fichero) { Fichero = fopen("fichero". } Manejo Básico de Archivos en Lenguaje C Héctor A. &registro. printf("\nDigita la edad: "). &registro. printf("\nNumero \tNombre \tEdad \tSueldo").Edad). } fread(&registro. scanf("%d". } printf("\nDigita el nombre: "). fwrite(&registro.Sueldo). Tablero .fclose (Fichero). Fichero). "a+"). registro. while(!feof(Fichero)) { printf("\n%d \t%s \t%d \t%. 1. return. printf("\nDigita el sueldo: "). 1. sizeof(struct sRegistro). if(Fichero == NULL) { printf("\nFichero no existe! \nPor favor creelo"). &registro. Fichero).2f". return. } void VerDatos(FILE *Fichero) { int numero = 1. if(Fichero == NULL) { printf("\nFichero no existe! \nPor favor creelo").Nombre). fread(&registro.

"%s". fprintf(fp. } fseek La función fseek activa el indicador de posición de ficheros para el stream apuntado por stream. Manejo Básico de Archivos en Lenguaje C Héctor A. mensaje[81]=""."). "\nEsto es otro texto dentro del fichero. long int desplazamiento. la nueva posición. Tablero . abrimos el documento "fichero.dat". El prototipo correspondiente de fprintf es: int fseek(FILE *stream. Para un stream binario. Podemos ver un ejemplo de su uso. fclose ( fp )..txt". La posición especificada es el comienzo del fichero si origen es SEEK_SET. medido en caracteres del principio del fichero. argumento.h> int main() { char nombre[11] = "datos4. pero la salida se dirige a un archivo en lugar de a la pantalla.txt" en modo lectura/escritura y escribimos dentro de él: #include <stdio. "r+" ).fprintf La función fprintf funciona igual que printf en cuanto a parámetros. .h> #include <string. char buffer[100] = "Esto es un texto dentro del fichero. El prototipo correspondiente de fprintf es: int fprintf(FILE *archivo. el valor actual del indicador de posición de fichero si es SEEK_CUR.h> int main ( int argc.. const char *formato. La función fseek retorna un valor distinto a cero sólo si una petición no se pudo satisfacer.). return 0. fprintf(fp. es obtenida mediante la suma de desplazamiento y la posición especificada por origen. o final de fichero si es SEEK_END.". char **argv ) { FILE *fp. int origen). #include <stdio. fp = fopen ( "fichero. buffer).

long int comienzo. } if( (comienzo=ftell( fichero )) < 0 ) printf( "ERROR: ftell no ha funcionado\n" ). return 1.FILE *fichero. printf( "Mensaje del fichero:\n%s\n". fseek( fichero. fgets( mensaje. else { printf( "Error: fichero NO CERRADO\n" ). SEEK_SET ). nombre. Tablero . final = ftell( fichero ). 0L. 0L. final. fseek( fichero. fichero = fopen( nombre. mensaje ). nombre ). fichero ). "r" ). if( !fclose(fichero) ) printf( "Fichero cerrado\n" ). printf( "\nTamaño del mensaje (usando strlen): %d\n". comienzo ). SEEK_END ). return 1. } Manejo Básico de Archivos en Lenguaje C Héctor A. printf( "Fichero: %s -> ". } return 0. strlen(mensaje) ). printf( "Tamaño del fichero \"%s\": %d bytes\n". else printf( "Posición del fichero: %d\n\n". finalcomienzo+1 ). 80. if( fichero ) printf( "existe (ABIERTO)\n" ). else { printf( "Error (NO ABIERTO)\n" ).

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->