struct Employee
{
   /* Employee details */
   char name[MAX_NAME_LENGTH+1]; /* name string */
   char sex;                     /* sex identifier, either 'M' or 'F' */
   int  age;                     /* age */
   char job[MAX_JOB_LENGTH+1];   /* job string */

   struct Employee *prev, *next;
};

static void menu_add_employee(void)
{
    static struct Employee *employee_list = NULL;
    {
        struct Employee *new;

        new = (struct Employee *) malloc ( sizeof(struct Employee) );
        strcpy (new -> name, "Sadra Mostashar");
        new -> sex = 'M';
        new -> age = 20;
        strcpy (new -> job, "Student");

        /*add first employee to doubly linked list*/
        new -> prev = NULL;
        new -> next = employee_list;
        employee_list = new;
        free ( new );
}

static void menu_print_database(void)
{/*Here's my question, How do I print the above structure in this function by calling that structure?*/
    struct Employee *employee_list;
    printf("Name: %s\n", employee_list->name);
    printf("Sex:  %c\n", employee_list->sex);
    printf("Age:  %i\n", employee_list->age);
    printf("Job:  %s\n", employee_list->job);
}

Edited 3 Years Ago by Reverend Jim: Fixed formatting

You have a double linked list. If you want to print another node of that list (another structure's worth of data), then go to that node, and print it.

You don't print a structure, from another structure. Structures just hold data, and are not "Objects" with the ability to print other structures.

You use the dot member operator to access each member of the structure, including printing it.

This article has been dead for over six months. Start a new discussion instead.