This gives seg fault. Why? Thanks.Code:#include<stdio.h> #include <string.h> #include <stdlib.h> const char* search1=""; const char* search2="apple"; const char* search3="apple tree"; char* strings1[3]={"","",""}; char* strings2[3]={"app","apple treehouse","apple treehouse"}; char* match(const char* search, char** strings, int n) { if (n==0) { return ""; } if (n==1) { if (!strcmp(search, "")) { return strings[0]; } else { if (!strncmp(strings[0], search, strlen(search))) { return strings[0]; } else return ""; } } if (n>1) { int i=1; int j=n-1; int k=1; char result[20]=""; if (!strcmp(search, "")) { while (j--) { if (!strncmp(strings[0], strings[i++], k)) continue; else return ""; } strncpy(result, strings[0], 1); result[1]='\0'; char* r=(char*)malloc(20*sizeof(char)); strcpy(r, result); k++; i=1; j=n-1; while (k++<=strlen(strings[0])) { while (j--) { if (!strncmp(strings[0], strings[i++], k)) continue; else return r; } strncpy(result, strings[0], k); result[k]='\0'; strcpy(r, result); puts(r); } strcpy(r, strings[0]); return r; } } } int main() { match(search1, strings2, 3); return 0; }