Witam! Z programowania mam zadanie o następującej treści:
"Napisz funkcję mającą w sumie trzy parametry - dwa napisy oraz wskaźnik na zmienną całkowitą. Zadaniem funkcji jest sprawdzić, czy drugi napis jest identyczny z początkiem pierwszego napisu (czyli czy pierwszy napis zawiera na swoim początku drugi napis). Jeżeli pierwszy napis nie zawiera drugiego funkcja ma zwrócić wskaźnik zerowy ( NULL ). W przeciwnym wypadku zwrócony ma zostać adres znaku (wskaźnik do miejsca w pierwszym napisie), który jest pierwszym znakiem nie występującym w drugim napisie. Ponadto funkcja powinna w poprzez trzeci parametr (wskaźnik) zwrócić długość drugiego napisu. W funkcji nie wolno używać funkcji strlen(). Funkcję należy dwukrotnie wywołać w main() z przykładowymi danymi (raz dla przypadku gdy drugi napis występuje na początku pierwszego, a drugi raz - gdy nie występuje) i jeżeli to możliwe to wypisać zawartość pamięci znajdującej się pod zwróconym przez return adresem oraz długość drugiego napisu."
Program mam napisany i o ile pokazuje mi adres znaku i adres pamięci, to wartość znaku jest zła, bo wskazuje na litere "a" a powinno na "n"... Nie wiem już co i gdzie mam poprawić :/ Poniżej wstawiam kod programu, który już napisałem:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int podstring(char tab1[], char tab2[]){
char *wsk=NULL;
int adres;
int i;
for(i=0;i<sizeof(tab2);i++){
adres=tab1[i];
if(tab2[i]!=tab1[i]){
return wsk;
}
else if(tab2[i]==tab1[i]){
printf("Wartosc znaku: %d\n", adres);
printf("Adres znaku: %d\n", &adres);
for(i=0;*(tab2+i)!='\0';i++){
} printf("Dlugosc napis2: %d\n", i);
}
}
}
main(){
int i, pam;
char napis1[100]="alanoidalny";
char napis2[100]="ala";
char napis3[100]="doponoidalny";
char napis4[100]="lokpano";
printf("Pierwsze wywolanie: \n");
printf("\n");
podstring(napis1, napis2);
printf("\n");
printf("Drugie wywolanie: \n");
printf("\n");
pam=podstring(napis3, napis4);
printf("Adres pamieci: %d", &pam);
printf("\n");
for(i=0;napis4[i]!='\0';i++){
} printf("Dlugosc napis4: %d\n", i);
printf("\n");
system("PAUSE");
return 0;
}
Proszę o pomoc w doszlifowaniu programy. Z góry dziękuje!