Моя программа заменяет все строковые типы данных во всех узлах в связанном списке
У меня есть программа, которая в основном добавляет историю (узел) в employee_record (связанный список).
Вот мой код:
#include <stdio.h>
#include <stdlib.h>
struct history{
char *department1;
char *title1;
int day;
int month;
int year;
struct history *next;
};
struct employee_record{
char firstname[20];
char lastname[20];
long int employee_id;
char sex;
int age;
struct history *head;
};
void addjob(struct employee_record *rec,
char *department, char *title,
int day, int month, int year);
void print(struct employee_record *rec);
int main(int argc, char *argv[])
{
struct employee_record *worker=(struct employee_record*)malloc(sizeof(struct employee_record));
worker->head=NULL;
int c,d,e;
printf("Department\tTitle\tDay\tMonth\tYear\n");
while (1){
char a[10]=" ";
char b[10]=" ";
scanf("%s %s %d %d %d",a,b,&c,&d,&e);
addjob(worker,a,b,c,d,e);
printf("Department\tTitle\tDay\tMonth\tYear\n");
print(worker);
}
return 0;
}
void addjob(struct employee_record *rec,
char *department, char *title,
int day, int month, int year){
struct history *new=(struct history*)malloc(sizeof(struct history));
struct employee_record *temp;
new->day=day;
new->department1=department;
new->month=month;
new->year=year;
new->title1=title;
if (rec->head != NULL)
new->next=rec->head;
else {
new->next=NULL;
}
rec->head=new;
}
void print(struct employee_record *rec){
struct history *temp;
temp=rec->head;
printf("%s\t%s\t%d\t%d\t%d",temp->department1,temp->title1,temp->day,temp->month,temp->year);
while(temp->next!=NULL){
printf("\n");
temp=temp->next;
printf("%s\t%s\t%d\t%d\t%d",temp->department1,temp->title1,temp->day,temp->month,temp->year);
}
printf("\n");
}
Однако, когда я ввожу вторую запись, заменяется элемент отдела и заголовок предыдущего узла истории, а не день, месяц и год, как показано ниже.
Почему это так?