Logo Studenta

agenda

Esta es una vista previa del archivo. Inicie sesión para ver el archivo original

/*
*ejemplo6_31
*agenda.c
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "agenda.h"
#define TAMANHO_MAX 100 /*tamaño máximo de la agenda*/
static Contacto agenda[TAMANHO_MAX];
int inicializarAgenda (const char *nombreFichero) {
 FILE *fichero;
 register int posicion=0;
 int leidos;
 if ((fichero=fopen(nombreFichero,"rb")) != NULL) {
 while (fread (&agenda[posicion],
 sizeof(Contacto),1,fichero) && posicion<TAMANHO_MAX)
 posicion++;
 fclose(fichero);
 } else {
 return ERROR;
 }
 leidos = posicion;
 for (; posicion<TAMANHO_MAX; posicion++) {
 /*inicializar el
 resto de componentes del array*/
 agenda[posicion].nombre[0]='\0';
 }
 return leidos;
}
int buscarContactoEnAgenda (char nombre[]) {
 register int posicion;
 for (posicion=0; posicion<TAMANHO_MAX; posicion++)
 if (strcmp(agenda[posicion].nombre,nombre)==0) {
 return posicion;
 }
 return ERROR;
}
int recorrerAgenda (int ultimoProcesado) {
 register int posicion;
 for (posicion=ultimoProcesado; posicion<TAMANHO_MAX;
 posicion++) {
 if (agenda[posicion].nombre[0]) {
 return posicion;
 }
 }
 return ERROR;
}
int salvarAgenda (const char *nombreFichero) {
 FILE *fichero;
 register int posicion=0;
 if ((fichero=fopen(nombreFichero,"wb")) == NULL) {
 return ERROR;
 } else {
 for (posicion=0; posicion<TAMANHO_MAX; posicion++) {
 if (agenda[posicion].nombre[0]) {
 if ((fwrite (&agenda[posicion],
 sizeof(Contacto),1,fichero)) != 1) {
 return ERROR;
 }
 }
 }
 fflush(fichero);
 fclose(fichero);
 }
 return posicion;
}
int introducirContactoEnAgenda(Contacto nuevoContacto) {
 int hueco;
 for (hueco=0; hueco<TAMANHO_MAX; hueco++) {
 if (agenda[hueco].nombre[0]=='\0')
 break;
 }
 if (hueco==TAMANHO_MAX)
 return ERROR;
 agenda[hueco] = nuevoContacto;
 return hueco;
}
void borrarContactoEnAgenda(int posicion) {
 agenda[posicion].nombre[0]='\0';
}
Contacto recuperarContactoDeAgenda(int posicion) {
 return agenda[posicion];
}
void modificarContactoEnAgenda(int posicion, Contacto contacto) {
 agenda[posicion] = contacto;
}

Otros materiales