Step 7: Read the Contact Name

Easy Section 2: Add Contact Module
Solve in Playground →

Problem Statement

Extend the existing add_contact() flow by reading the contact name after a valid ID. The name must be read as a complete line so spaces are preserved. Keep all Task 5 and Task 6 behavior intact, including ID display and validation. Invalid IDs must still stop the Add Contact operation before name input.

Input Format

A menu choice of 1, a valid integer ID, and a full contact name on the following line, followed by 0 to exit.

Output Format

Print ID: [id], Valid ID, then Name: [full name].

Constraints

The ID must be positive. The contact name may contain spaces and must fit within the 49-character name array limit.

Sample Input

1
101
Alice Johnson
0

Sample Output

Contact Book Ready.
Phonebook Capacity: 100
Contacts: 0
Modules Ready.
Menu:
Add
ID: 101
Valid ID
Name: Alice Johnson
Menu:
Exit

Explanation

Using a line-based name input prevents spaces in names from being lost. The complete earlier ID workflow remains part of add_contact().

Starter Code

#include <stdio.h>
#include <string.h>

struct Contact {
    int id;
    char name[50];
    char phone[15];
};

struct Contact phonebook[100];
int contact_count = 0;

void add_contact();
void display_contacts();
void search_contact();
void update_contact();
void delete_contact();

void add_contact() {
    int id;

    if (scanf("%d", &id) == 1) {
        printf("\nID: %d", id);

        if (id > 0) {
            printf("\nValid ID");

            // Write your code here
        } else {
            printf("\nInvalid ID");
        }
    }
}

void display_contacts() {
}

void search_contact() {
}

void update_contact() {
}

void delete_contact() {
}

int main() {
    int choice;

    printf("Contact Book Ready.");
    printf("\nPhonebook Capacity: %d", sizeof(phonebook)/sizeof(phonebook[0]));
    printf("\nContacts: %d", contact_count);
    printf("\nModules Ready.");

    while (1) {
        printf("\nMenu:");

        if (scanf("%d", &choice) != 1) {
            break;
        }

        switch (choice) {
            case 1:
                printf("\nAdd");
                add_contact();
                break;

            case 2:
                printf("\nDisplay");
                display_contacts();
                break;

            case 3:
                printf("\nSearch");
                search_contact();
                break;

            case 4:
                printf("\nUpdate");
                update_contact();
                break;

            case 5:
                printf("\nDelete");
                delete_contact();
                break;

            case 0:
                printf("\nExit");
                return 0;

            default:
                printf("\nInvalid Choice");
                break;
        }
    }

    return 0;
}

Limits

  • Time Limit: 1s
  • Memory Limit: 256MB

Embedded C Programming

Updated: March 15, 2026
Intermediate

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