#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct node
{
int data;
struct node *right, *left;
};
struct node *root = NULL;
int flag = 0;
void insert(int val){
struct node *t, *p;
t = (struct node*)malloc(sizeof(struct node));
t->data = val;
t->left = NULL;
t->right = NULL;
p = root;
if( root == NULL ){
root = t;
return;
}
struct node *curn = root;
while(curn){
p = curn;
if(t->data > curn->data){
curn = curn->right;
}
else{
curn = curn->left;
}
}
if(t->data > p->data){
p->right = t;
}
else{
p->left = t;
}
}
int search(int val){
if(root->data == val){
return 1;
}
struct node *curn;
curn = root;
while(curn){
if(curn->data < val){
curn = curn->right;
if(curn->data == val){
return 1;
}
}
if(curn->data > val){
curn = curn->left;
if( curn->data == val ){
return 1;
}
}
}
return 0;
}
int main(void){
char opt[5] = "yes";
int val, sear;
while(1){
printf("Enter the key number:\n");
scanf("%d",&val);
insert(val);
printf("Do you want to create another junction?\n");
scanf("%s",opt);
if(strcmp(opt,"yes") == 0){
continue;
}
if(strcmp(opt, "no") == 0){
printf("Enter the key to be searched\n");
scanf("%d",&sear);
flag = search(sear);
if(flag == 1){
printf("%d found",sear);
return 0;
}
printf("%d not found",sear);
return 0;
}
}
}
During search, if the search key is available, it shows key found, it doesn't throw any error.
But if search key is not present means it throws an error segmentation fault( core dumped ), Why this segmentation fault comes in my code?