Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_NAME_LENGTH 40
#define CONTACTS 50
typedef struct {
char cfirstName[MAX_NAME_LENGTH];
char clastName[MAX_NAME_LENGTH];
char chomeNumber[MAX_NAME_LENGTH];
char ccellNumber[MAX_NAME_LENGTH];
char * firstName;
char * lastName;
char * homeNumber;
char * cellNumber;
} entry;
void menu();
void addfriend(entry * pb, int * ptrX, char buffer[], int *);
void showfriend(entry * pb, int * ptrX, char buffer[]);
void showpb(entry * pb, int * ptrX, char buffer[], int *);
void set_firstName(entry * pb, int * ptrX, char buffer[], int *);
void get_firstName(entry * pb, int * ptrX, int);
void set_lastName(entry * pb, int * ptrX, char buffer[], int *);
void get_lastName(entry * pb, int * ptrX, int);
void set_homeNumber(entry * pb, int * ptrX, char buffer[], int *);
void get_homeNumber(entry * pb, int * ptrX, int);
void set_cellNumber(entry * pb, int * ptrX, char buffer[], int *);
void get_cellNumber(entry * pb, int * ptrX, int);
main()
{
entry * pb;
pb = malloc(CONTACTS * sizeof(*pb));
int option = 0;
int length = 0;
int X = 0;
int * ptrX;
ptrX = &X;
char buffer[100];
//Variables
do{
menu();
scanf("%d", &option);
if(option == 1){addfriend(pb, ptrX, buffer, &length);}
if(option == 4){showpb(pb, ptrX, buffer, &length);}
if(option == 5){
free(pb);
printf("Good Bye!");
exit(0);
}
}
while(1);
//Functions for phonebook
system("PAUSE");
}
//Menu
void menu(){
printf("\nPhone Book Application\n");
printf("1) Add friend\n");
printf("2) Delete friend\n");
printf("3) Show a friend\n");
printf("4) Show phone book\n");
printf("5) Quit\n\n\n");
printf("What would you like to do?:");
}
void set_firstName(entry * pb, int * ptrX, char buffer[], int * length){
scanf("%s", buffer);
* length = strlen(buffer);
strcpy(pb[*ptrX].cfirstName, buffer);
}
void get_firstName(entry * pb, int * ptrX, int i){
printf("\nFirst name: %s\n", pb[i].cfirstName);
}
void set_lastName(entry * pb, int * ptrX, char buffer[], int * length){
scanf("%s", buffer);
* length = strlen(buffer);
strcpy(pb[*ptrX].clastName, buffer);
}
void get_lastName(entry * pb, int * ptrX, int i){
printf("Last name: %s\n", pb[i].clastName);
}
void set_homeNumber(entry * pb, int * ptrX, char buffer[], int * length){
scanf("%s", buffer);
* length = strlen(buffer);
strcpy(pb[*ptrX].chomeNumber, buffer);
}
void get_homeNumber(entry * pb, int * ptrX, int i){
printf("Home number: %s\n", pb[i].chomeNumber);
}
void set_cellNumber(entry * pb, int * ptrX, char buffer[], int * length){
scanf("%s", buffer);
* length = strlen(buffer);
strcpy(pb[*ptrX].ccellNumber, buffer);
}
void get_cellNumber(entry * pb, int * ptrX, int i){
printf("Cell number: %s\n", pb[i].ccellNumber);
}
//Addfriend Function
void addfriend(entry * pb, int * ptrX, char buffer[], int * length){
int joseph = *length;
printf("%d", joseph);
printf("First name: ");
set_firstName(pb, ptrX, buffer, length);
realloc(pb, *ptrX * sizeof(* length));
printf("Last name: ");
set_lastName(pb, ptrX, buffer, length);
realloc(pb, *ptrX * sizeof(* length));
printf("Phone number (home): ");
set_homeNumber(pb, ptrX, buffer, length);
realloc(pb, *ptrX * sizeof(* length));
printf("Phone number (cell): ");
set_cellNumber(pb, ptrX, buffer, length);
realloc(pb, *ptrX * sizeof(* length));
printf("....Record added to the phone book\n\n\n\n\n");
strcpy(buffer, "");
*ptrX += 1;
}
//Show phonebook Function
void showpb(entry * pb, int * ptrX, char buffer[], int * length){
int i = 0;
for(i= 0; i < * ptrX; i++){
get_firstName(pb, ptrX, i);
printf("%s", pb[i].cfirstName);
get_lastName(pb, ptrX, i);
get_homeNumber(pb, ptrX, i);
get_cellNumber(pb, ptrX, i);
}
}