Simple To-Do List Application in C

 

 

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.

 

Leave a Reply

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