Create the permanent function framework that will hold the Contact Book modules.
Add function prototypes and empty function definitions for:
add_contact,
display_contacts,
search_contact,
update_contact, and
delete_contact.
Retain all code and initialization behavior from Task 2.
The new functions should not yet perform contact operations; they establish stable extension points that later tasks will fill incrementally.
No input is required.
Print the Task 2 initialization output followed by: Modules Ready.
The five required functions must exist with no parameters and void return type. Existing Contact structure, global phonebook array, contact_count, and Task 2 output must remain intact.
Contact Book Ready.
Phonebook Capacity: 100
Contacts: 0
Modules Ready.
Creating the module framework now prevents future tasks from restructuring the main program. Every later feature can be added inside these permanent functions while preserving the complete earlier codebase.
#include <stdio.h>
#include <string.h>
struct Contact {
int id;
char name[50];
char phone[15];
};
struct Contact phonebook[100];
int contact_count = 0;
// Write your code here
int main() {
printf("Contact Book Ready.");
printf("\nPhonebook Capacity: %d", sizeof(phonebook)/sizeof(phonebook[0]));
printf("\nContacts: %d", contact_count);
// Write your code here
return 0;
}Embedded systems rely on efficient low-level programming to interact directly with hardware. In this course, you will learn how to write practical Embedded C programs used in real microcontroller-based systems. Rather than focusing only on theory, this course follows a practice-driven approach. Each lesson includes hands-on coding exercises that simulate real firmware development tasks used