Espero Que la Siguiente Informacion Sea de Utilidad
/*****
Prototipo de la Funcion fwrite:
******************************/
size_t fwrite(Buffer, Tam_Elemento, Nro_Elementos, Punt_File)
char *Buffer; /* Puntero a la Información Que Se Va A Guardar */
size_t Tam_Elemento; /* Nro de Bytes Por Elemento a Guardar */
Nro_Elementos; /* Nro de Elementos a Guardar */
FILE *Punt_File;/* Puntero al Archivo Donde Se Va A Grabar la Informacion */
/***
Valor de Retorno
****************
El Numero de Elementos Efectivamente Grabados.
Este Nro Debe Ser Igual a Nro_Elementos, En Caso Contrario Indica Que
Se ha Producido Un Error de Escritura y Retorna el Nro de Elementos
Efectivamente Guardado Entes de Producirse el Error. En cuyo Caso la
instrucción ferror (FILE *Punt_File) Retornara True Para Confirmar La
Existencia de Un Error.
**********************/
/***
Verificar Si La Escritura Tuvo Exito
Si No Grabo El Nro de Elementos Indicado Se Produjo un Error
***********************************************************/
if(fwrite(Buffer, Tam_Elemento, Nro_Elementos, Punt_File) != Nro_Elementos)
{
perror(Error de Escritura Ejenplo.c Linea xxx:);
exit(-1);
}
/***
else printf ("La Escritura Fue Exitosa");
****************************************/
/*****
Prototipo de la Funcion fread:
******************************/
size_t fread(Buffer, Tam_Elemento, Nro_Elementos, Punt_File)
char *Buffer; /* Puntero Donde se Va a Guardar la Información */
size_t Tam_Elemento; /* Nro de Bytes Por Elemento a Leer */
Nro_Elementos; /* Nro de Elementos a Leer */
FILE *Punt_File; /* Puntero al Archivo Donde Se Va A Leer la Informacion */
/***
Valor de Retorno
****************
El Numero de Elementos Efectivamente Leidos.
El Nro de Elementos Leidos Debe Ser Igual a Nro_Elementos. En Caso Contrario
Indica Que Se llego al Fin Del Archivo o Que Se Produjo Un Error
***************************************************************************/
/***
Verificar Si La Lectura Tuvo Exito
Si No Leyo El Nro de Elementos Indicado Se Llego a Fin de Archivo
o Se Produjo un Error en la Lectura
***********************************************************/
if(fread(Buffer, Tam_Elemento, Nro_Elementos, Punt_File) != Nro_Elementos)
{
if(!ferror(Punt_File)) printf("Se Llego a Fin de Archivo");
else
{
perror(Error de Lectura Ejemplo.c Linea xxx:);
exit(-1);
}
}
/***
printf ("La Lectura Fue Exitosa");
*********************************/
/*****
Resto del Codigo
...
...
/***
Si Se Esta Dentro de Un Bucle Verificar Que Se Llego a Fin de Archivo
Por Ejemplo:
*********************************************************************/
/***
Si No Hay Fin de Archivo Continue
********************************/
if(!feof(Punt_File)) continue;
/***
Si Encuentra Fin de Archivo Rompa
********************************/
if(feof(Punt_File)) break;
*********************/
/***
Cerrar Los Archivos Abiertos Antes de Terminar El Programa
*********************************************************/
fclose(Punt_File);
/**********************************
Otros Elementos a Considerar en el Sistema de Entrada/Salida
***********************************************************/
/***
Despues de Toda Accion de Lectura o Escritura fwrite o fread la
POSICION ACTUAL del Punt_File Apunta a la Posicion Nro_Elementos
Por Tam_Elementos Leidos o Escritos.
Ejemplo:
**************************************************************/
/***
Accion de Escritura
********************************************************/
strcpy(Buffer,"Esta Es Una Escritura de Prueba");
Nro_Elementos = strlen(Buffer);
if(fwrite(Buffer, sizeof(char),Nro_Elementos, Punt_File) != Nro_Elementos)
{
perror(Error de Escritura Ejemplo.c Linea xxx:);
exit(-1);
}
else printf ("Se Grabo [%s] Exitosamenten",Buffer);
/***
Accion de Lectura de Lo que Se Acaba de Grabar
*********************************************/
/***
Prototipo de Funcion fseek:
***************************
int fseek(Punt_File, Nro_Bytes, Origen)
FILE *Punt_File;
long Nro_Bytes; /* Nro de Bytes a Moverse "Valor negativo o Positivo" */
int Origen; /* A Partir de Donde Se Va a Mover:
SEEK_SET Desde el Origen del Archivo,
SEEK_CUR A Partir de la Posicion Actual
SEEK_END A Partir del Fin del Archivo */
**************************************************************************/
/***
Se Posiciona el Archivo En la Posicion Inicial Donde Se Grabo.
Moviendose desde la Posición Actual Hacia Atras Un Numero de Bytes
Igual Al Tamaño de Cada Elemento Por el Nro. de Elementos Grabados
*****************************************************************/
fseek(Punt_File, -sizeof(char)*Nro_Elementos, SEEK_CUR);
/***
Se Inicializa el Buffer
**********************/
Buffer[0] = 0x00; /* Se coloca " " en el Primer Elemento del Buffer */
/***
Se lee el Archivo
****************/
if(fread(Buffer, Tam_Elemento, Nro_Elementos, Punt_File) != Nro_Elementos)
{
if(!ferror(Punt_File)) printf("Se Llego a Fin de Archivon");
else
{
perror(Error de Lectura Ejemplo.c Linea xxx:);
exit(-1);
}
}
printf ("Buffer Leyo [%s] Exitosamenten",Buffer);
/***
Si Se Desea Ir Al Comienzo del Archivo
Se Puede Utilizar la Instruccion:
void rewind(FILE *Punt_File)
*************************************/