I cant see the reason for the syntax error in this code?
Code:
#include <stdio.h>

int what (char *st1,char *st2){
	char  *p=st1;

	if (*st2|| *st1) {
		if (*st1=='\0') return 0;       //here something regarding variable assigning
		while(*st1 && *st2 && *st1==*st2) st++;    // and here
		if (st==p) return 0;
		return what(st1,st2+1);
	}
	else
		 return 1;
}



int main() {
	char str1[]="aaabbbbbbcd" , str2[]="abcd" , str3[]="abd" ,str4[]="abcde";

	printf("%d %d %d\n",what(str1,str2),what(str1,str3),what(str1,str4));
return 0;
}