Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct phonebook {
char name[30];
char tel[15];
int age;
struct phonebook *next;
} phonebook_t;
void AddEntry (void);
void DeleteEntry (void);
void SearchEntry (void);
void ListAll(void);
void writePCText(void);
phonebook_t *head= NULL;
int main() {
int choice;
while (choice!=5) {
printf("\nWelcome to PHONEBOOK MENU:\n\n");
printf("> [1] Add Entry\n");
printf("> [2] Delete Entry\n");
printf("> [3] Search for Entry\n");
printf("> [4] Show all Entries\n");
printf("> [5] Exit\n\n");
printf("ENTER CHOICE: ");
scanf("%d",&choice);
switch (choice) {
case 1: AddEntry();
break;
case 2: DeleteEntry();
break;
case 3: SearchEntry();
break;
case 4: ListAll();
break;
case 5:
writePCText();
exit(1);
break;
default:
printf ("Invalid INPUT!\n");
}
}
return 0;
}
void AddEntry (void){
phonebook_t *new_name;
new_name= (phonebook_t *)malloc (sizeof (phonebook_t));
if (new_name == NULL) {
printf ("Out of memory!\n");
exit (-1);
}
printf ("\n\nName: ");
getchar();
fgets(new_name->name,30,stdin);
printf ("Phone Number: ");
fgets(new_name->tel,15,stdin);
printf ("Age (Numerical Value): ");
scanf("%d",&new_name->age);
new_name->next= head;
head= new_name;
}
void DeleteEntry (void) {
phonebook_t *del_ptr;
phonebook_t *prev_ptr;
char del_name[30];
printf ("Enter Name to be Deleted: ");
getchar();
fgets(del_name,30,stdin);
if (head == NULL) {
printf ("\nName not registered in the list!\n");
return;
}
if (strcmp(head->name, del_name) == 0) {
printf("\n%s Deleted!\n",del_name);
del_ptr = head;
head = head->next;
free(del_ptr);
return;
}
prev_ptr = head;
while (prev_ptr->next != NULL) {
if (strcmp(prev_ptr->next->name,del_name) == 0) {
printf("\n%s Deleted!\n",del_name);
del_ptr= prev_ptr->next;
prev_ptr->next= del_ptr->next;
free(del_ptr);
return;
}
prev_ptr= prev_ptr->next;
}
printf ("Name not found in the list!\n");
}
void SearchEntry (void){
char name[30];
phonebook_t *search_ptr;
printf ("\nSearch for a Name (Exact): ");
getchar();
fgets(name,30,stdin);
search_ptr= head;
while (search_ptr != NULL) {
if (strcmp (search_ptr->name, name) == 0) {
printf("\n%sFound!\n",name);
printf ("Phone Number: %s\n", search_ptr->tel);
printf ("Age: %d\n", search_ptr->age);
return;
}
search_ptr= search_ptr->next;
}
printf ("\nName not registered in the list!\n");
}
void ListAll(void)
{
phonebook_t *tmp_ptr;
printf ("\nAll Names Registered:\n");
tmp_ptr= head;
while (tmp_ptr != NULL) {
printf ("\nName: %s\n",tmp_ptr->name);
printf ("Phone Number: %s\n",tmp_ptr->tel);
printf ("Age: %d\n\n\n",tmp_ptr->age);
tmp_ptr= tmp_ptr->next;
}
}
void writePCText(void){
FILE *out;
out = fopen("hehe.txt", "w" );
phonebook_t *tmp_ptr;
tmp_ptr=head;
while(tmp_ptr!=NULL){
fprintf(out,"%s" , tmp_ptr->name);
fprintf(out,"%s", tmp_ptr->tel);
fprintf(out,"%d", tmp_ptr->age);
tmp_ptr= tmp_ptr->next;
}
printf("Thank you! Hope to see you soon!");
exit(1);
}
Here is my code )