Во-первых, s1
и s2
в main не были инициализированы, чтобы указывать на что-либо значимое. Либо объявите их как статические массивы, либо выделите им память во время выполнения, используя malloc()
или calloc()
:
#define SIZE 20 // or some number big enough to hold your input
...
char s1[SIZE], s2[SIZE], *position; // s1 and s2 declared statically
Второе, НИКОГДА НИКОГДА НИКОГДА НИКОГДА НИКОГДА НИКОГДА использовать gets()
; это будет вводить точку отказа в вашей программе. Используйте fgets()
вместо:
if (fgets(s1, sizeof s1, stdin) != NULL)
// process s1
else
// check for EOF or error on read
EDIT
И, как все остальные отметили, ваше сравнение в функции strstr()
должно быть либо
*s1 == *s2
или
s1[i] == s2[i]
но сначала вам нужно разобраться с правильным размещением буферов в main.