I have a programme that adds new positions to structure list. Structure definition is:
struct data
{
    char name[50];
    char surname[50];
    float income;
    float taxed_income;
    char account[20];
    char id[10];
    struct data *next, *prev;
};
and function that adds data is :
struct data* add_element()
{
    struct data *tmp;
    bool flag=true;
    float input;
    char inpt[50];
    tmp = NULL;
    do {
        printf("Id: ");
        fgets(inpt,49,stdin);
        if(head != NULL)
            flag=id_check(inpt);
    }
    while(!flag);
    strcpy(tmp->id,inpt);
    do {
        printf("Name: ");
        fgets(inpt,49,stdin);
        flag=check(inpt);
    }
    while(!flag);
    strcpy(tmp->name,inpt);
    do {
        printf("Surname: ");
        fgets(inpt,49,stdin);
        flag=check(inpt);
     }
    while(!flag);
    strcpy(tmp->surname,inpt);
    do {
        printf("Account: ");
        fgets(inpt,49,stdin);
        flag=check_num(inpt);
    }
    while(!flag);
    strcpy(tmp->account,inpt);
    printf("Income: ");
    scanf("%f",&input);
    tmp->income=input;
    printf("taxed Income: ");
    scanf("%f",&input);
    tmp->taxed_income=input;
    return tmp;
}
programme crashes when I reach first strcpy. all checks are assuring that input meet project spec.
 
     
     
     
    