I\'ve encountered a couple of problems with the program that i\'m writing now.
You read one string with fgets()
and the other with getchar()
upto the end of file. There is a trailing '\n'
at the end of both strings, Hence strstr()
can only match the substring if it is at the end of the main string.
Furthermore, you do not store a final '\0'
at the end of haystack
. You must do this because haystack
is a local array (automatic storage), and as such is not initialized implicitly.
You can correct the problem this way:
//getting my substring here (needle)
if (!fgets(needle, sizeof(needle), stdin)) {
// unexpected EOF, exit
exit(1);
}
needle[strcspn(needle, "\n")] = '\0';
//getting my string here (haystack)
if (!fgets(haystack, sizeof(haystack), stdin)) {
// unexpected EOF, exit
exit(1);
}
haystack[strcspn(haystack, "\n")] = '\0';