Introduction

A to-do list application helps users organize and track tasks that need to be completed.
In this program, we will implement a simple to-do list in C, where users can add, display, and delete tasks.
The application will allow a user to interact with a menu to perform the desired actions.

Objective

The goal of this project is to create a simple to-do list application in the C programming language.
Users will be able to:

  • Add tasks to the to-do list.
  • View the current list of tasks.
  • Delete tasks when they are completed.
  • Exit the application.

Code: Simple To-Do List Application in C

#include 
#include 

#define MAX_TASKS 100
#define MAX_LENGTH 200

// Structure for task
struct Task {
    char description[MAX_LENGTH];
};

// Function prototypes
void addTask(struct Task tasks[], int* taskCount);
void deleteTask(struct Task tasks[], int* taskCount);
void displayTasks(struct Task tasks[], int taskCount);
void clearBuffer();

int main() {
    struct Task tasks[MAX_TASKS];
    int taskCount = 0;
    int choice;

    while (1) {
        // Display menu
        printf("\n===== To-Do List Application =====\n");
        printf("1. Add Task\n");
        printf("2. Delete Task\n");
        printf("3. Display Tasks\n");
        printf("4. Exit\n");
        printf("Enter your choice: ");
        scanf("%d", &choice);

        switch (choice) {
            case 1:
                addTask(tasks, &taskCount);
                break;
            case 2:
                deleteTask(tasks, &taskCount);
                break;
            case 3:
                displayTasks(tasks, taskCount);
                break;
            case 4:
                printf("Exiting the application. Goodbye!\n");
                return 0;
            default:
                printf("Invalid choice. Please try again.\n");
        }
    }

    return 0;
}

// Function to add a task to the list
void addTask(struct Task tasks[], int* taskCount) {
    if (*taskCount < MAX_TASKS) {
        clearBuffer();
        printf("Enter task description: ");
        fgets(tasks[*taskCount].description, MAX_LENGTH, stdin);
        tasks[*taskCount].description[strcspn(tasks[*taskCount].description, "\n")] = 0;  // Remove trailing newline
        (*taskCount)++;
        printf("Task added successfully.\n");
    } else {
        printf("Task list is full. Cannot add more tasks.\n");
    }
}

// Function to delete a task from the list
void deleteTask(struct Task tasks[], int* taskCount) {
    int taskId;

    if (*taskCount == 0) {
        printf("No tasks to delete.\n");
        return;
    }

    printf("Enter task ID to delete (1 to %d): ", *taskCount);
    scanf("%d", &taskId);

    if (taskId < 1 || taskId > *taskCount) {
        printf("Invalid task ID.\n");
        return;
    }

    // Shift tasks to delete the chosen task
    for (int i = taskId - 1; i < *taskCount - 1; i++) {
        tasks[i] = tasks[i + 1];
    }

    (*taskCount)--;
    printf("Task deleted successfully.\n");
}

// Function to display all tasks
void displayTasks(struct Task tasks[], int taskCount) {
    if (taskCount == 0) {
        printf("No tasks available.\n");
        return;
    }

    printf("\n===== Task List =====\n");
    for (int i = 0; i < taskCount; i++) {
        printf("Task %d: %s\n", i + 1, tasks[i].description);
    }
}

// Function to clear the input buffer
void clearBuffer() {
    while (getchar() != '\n');
}

Explanation of the Program Structure

The program is divided into several key functions:

  • addTask: Allows the user to add a new task to the to-do list.
  • deleteTask: Allows the user to delete a task from the list by specifying the task number.
  • displayTasks: Displays all the tasks in the to-do list.
  • clearBuffer: Ensures that any unwanted newline characters left in the input buffer are cleared before taking further input.

The main function implements a menu-driven interface where the user can choose what action to perform. The program continues to run in a loop until the user chooses to exit.

How to Run the Program

  1. Save the code in a C file, for example todo_list.c.
  2. Compile the code using a C compiler, e.g., gcc todo_list.c -o todo_list.
  3. Run the compiled program by executing ./todo_list on Linux/Mac or todo_list.exe on Windows.
  4. Follow the on-screen menu to add, delete, or view tasks.

 

By Aditya Bhuyan

I work as a cloud specialist. In addition to being an architect and SRE specialist, I work as a cloud engineer and developer. I have assisted my clients in converting their antiquated programmes into contemporary microservices that operate on various cloud computing platforms such as AWS, GCP, Azure, or VMware Tanzu, as well as orchestration systems such as Docker Swarm or Kubernetes. For over twenty years, I have been employed in the IT sector as a Java developer, J2EE architect, scrum master, and instructor. I write about Cloud Native and Cloud often. Bangalore, India is where my family and I call home. I maintain my physical and mental fitness by doing a lot of yoga and meditation.

Leave a Reply

Your email address will not be published. Required fields are marked *

error

Enjoy this blog? Please spread the word :)