Producer–Consumer C Program
#include <stdio.h>
#include <stdlib.h>

#define MAX 5

int buffer[MAX];
int produced = 0;
int consumed = 1;
int i = 0;

/* Function declarations */
void producer(void);
void consumer(void);

int main()
{
    int n;

    while (1)
    {
        printf("\n");
        printf("Enter the choice\n");
        printf("1. Producer\n");
        printf("2. Consumer\n");
        printf("3. Exit\n");
        printf("Enter your choice: ");
        scanf("%d", &n);

        if (n == 3)
        {
            exit(0);
        }
        else if (n == 1)
        {
            producer();
        }
        else if (n == 2)
        {
            consumer();
        }
        else
        {
            printf("Invalid choice\n");
        }
    }

    return 0;
}

/* Producer function */
void producer(void)
{
    int result;

    if ((consumed == 1) && (i < MAX))
    {
        result = i + 1;

        buffer[i] = result;

        printf("Produced buffer = %d\n", buffer[i]);

        i++;
        produced = 1;
        consumed = 0;
    }
    else
    {
        printf("Buffer still to be consumed\n");
    }
}

/* Consumer function */
void consumer(void)
{
    if ((produced == 1) && (i > 0))
    {
        i--;

        printf("Consumed buffer = %d\n", buffer[i]);

        produced = 0;
        consumed = 1;
    }
    else
    {
        printf("Buffer still to be produced\n");
    }
}