I can't figure out why the program crashes whenever I put %s in the printf statement of the display method in the following code.
Code:
#include <stdio.h>
#include <stdlib.h>
typedef struct cardata{
char carname;
char carmodel;
char caryear;
}CarData;
struct node{
struct cardata data;
struct node *next;
struct node *prev;
}*start=NULL;
main()
{
int ch;
do
{
printf("\n\n\n1. Insert First\n2. Display\n3. Exit\n");
printf("\nEnter your choice: ");
scanf("%d", &ch);
switch(ch)
{
case 1:
insert_first();
break;
case 2:
display();
break;
case 3:
exit(0);
default:
printf("\n\nInvalid choice. Please try again. \n");
}
} while(1);
}
void insert_first(){
struct node *ptr;
char carname;
char carmodel;
char caryear;
printf("\n\nEnter the car name: ");
scanf("%s", &carname);
printf("\n\nEnter the car model: ");
scanf("%s", &carmodel);
printf("\n\nEnter the car year: ");
scanf("%s", &caryear);
if(start==NULL){
start=(struct node *)malloc(sizeof(struct node));
start->data.carname=carname;
start->data.carmodel=carmodel;
start->data.caryear=caryear;
start->prev=NULL;
start->next=NULL;
}else{
ptr=start;
start=(struct node *)malloc(sizeof(struct node));
start->data.carname=carname;
start->data.carmodel=carmodel;
start->data.caryear=caryear;
start->prev=NULL;
start->next=ptr;
ptr->prev=start;
ptr->next=NULL;
}
}
void display()
{
struct node *ptr=start;
int i=1;
if(ptr == NULL){
printf("\nLinklist is empty.\n");
}else{
printf("\nSr. No\tAddress\tCar Name\tPrevious Next\n");
while(ptr != NULL){
printf("\n%d.\t%d\t%s\t%d\t%d\n", i, ptr, ptr->data.carname,ptr->data.carmodel,ptr->data.caryear,ptr->prev,ptr->next);
ptr = ptr->next;
i++;
}
}
}