I'm having issues with my code skipping the first question in the second data structure. I'm pretty sure it's because the gets(), but not sure. I think I tried fgets(), but it still was giving me issues. Why?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define NumberOfActresses 5
typedef struct Actress
{
char *name, *placeofbirth, *haircolor;
int age;
float networth;
struct Actress *next;
} Actress;
void PopulateStruct(Actress *node)
{
node->name = (char *) malloc(sizeof(char) * 50);
node->placeofbirth = (char *) malloc(sizeof(char) * 50);
node->haircolor = (char *) malloc(sizeof(char) * 50);
printf("Please enter the name of the actress/actor: ");
gets(node->name);
printf("Please enter the actress/actor place of birth: ");
gets(node->placeofbirth);
printf("Please enter the actress/actor hair color: ");
gets(node->haircolor);
printf("Please enter the actress/actor age: ");
scanf("%d", &node->age);
printf("Please enter the actress/actor networth: ");
scanf("%f", &node->networth);
}
void DisplayStruct(Actress *head)
{
Actress *crawler;
crawler = head;
while(crawler != NULL)
{
printf("The name of the actress/actor is: %s\n", crawler->name);
printf("The place of birth for the actress/actor is: %s\n", crawler->placeofbirth);
printf("The hair color of the actress/actor is: %s\n", crawler->haircolor);
printf("The actress/actor age is: %d\n", crawler->age);
printf("The networth for the actress/actor is %f\n", crawler->networth);
crawler = crawler->next;
}
}
int main()
{
int i;
Actress *head = (Actress *) malloc(sizeof(Actress)), *crawler;
crawler = head;
for (i = 0; i < NumberOfActresses; i++)
{
PopulateStruct(crawler);
if (i == 2)
crawler->next = NULL;
else
crawler->next = malloc(sizeof(Actress));
crawler = crawler->next;
}
crawler = NULL;
DisplayStruct(head);
return 0;
}