I trying to implement strstr(str, substr) function. i tried implementing in two ways, my main goes like this
*#include<stdio.h>
char * my_strstr(char * str, char * substr);
int main()
{
char str[10], substr[10];
char *ptr;
printf("Enter the 1st string\n");
fgets(str, 10, stdin);
printf("Enter the sub string\n");
fgets(substr, 10, stdin);
printf("I'm here beofre funcall\n");
ptr = my_strstr(str, substr);
printf("%p %s", ptr, *ptr);
return 0;
}
one way is by receiving arrays as arrays itself in the my_strstr(str, str) function
char * my_strstr(char str[], char substr[])
{
int i, j, k=0, flag=0;
char *pt = (char *)str;
for(i=0; str[i] != '\0' && substr[i] != '\0'; i++)
{
if(str[i] == substr[0])
{
printf("I'm for1 %c \n", str[i]);
for(j=i; (str[j] != '\0' && substr[k] != '\0'); j++)
{
if(substr[k] == str[i+k])
flag = 1;
else
flag = 0;
k++;
printf("flag = %d \n", flag);
}
}
pt++;
}
if(flag == 1)
return pt;
else
return 0;
}
2nd way is receiving arrays as pointers
char * my_strstr(char * str, char * substr)
{
while(*str)
{
char * begin = str;
char * pattern = substr;
while(*str && *pattern && *str == *pattern)
{
str++;
pattern++;
}
if(!*pattern)
return begin;
str = begin + 1;
}
return 0;
}
Test case:
Enter the 1st string
Amarstar
Enter the sub string
star
output for both ways:
Segmentation fault (core dumped)
Please help me out for resolving the segmentation fault.