Witam mam problem z następującym zadaniem:
Napisz funkcję zawiera(), która pobiera jako argumenty dwa wskaźniki łańcuchowe. Jeśli drugi łańcuch zawiera się w pierwszym łańcuchu, funkcja powinna zwrócić adres, pod którym rozpoczyna się łańcuch. Na przykład wywołanie zawiera("pula", "ul") powinno zwrócić adres litery u w słowie pula. Jeśli drugi łańcuch nie zawiera się w pierwszym łańcuchu zwracaną wartością powinien być wskaźnik zerowy.
Napisałem coś takiego:
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
char *zawiera_lan(char *lancuch, char *lancuch2);
int main(void)
{
char a[100];
char b[100];
puts("Podaj pierwszy lancuch");
gets(a);
puts("Podaj drugi lancuch");
gets(b);
printf("%p", zawiera_lan(a, b));
getchar();
getchar();
return 0;
}
char *zawiera_lan(char *lancuch, char *lancuch2)
{
char *wsk;
int i = 0;
while(*lancuch)
{
if (i = strlen(lancuch2))
break;
if (*lancuch == *lancuch2)
{
if (i == 0)
wsk = lancuch;
i++;
lancuch++;
lancuch2++;
}
else if (*lancuch != *lancuch2)
{
i = 0;
lancuch++;
lancuch2++;
wsk = NULL;
}
}
return wsk;
}
Po wpisaniu obu łańcuchów wywala mi błąd, że wsk jest użyte przed inicjalizacją. Nie wiem bardzo w czym problem i nie mam do końca pewności czy ten kod jest w miarę poprawny. Proszę o jakieś porady co jest nie tak.