我是 C 编程的初学者,我刚刚开始学习指针的概念。有人可以解释为什么我的代码以分段错误结尾,而我认为我做得对吗?也许我缺乏一些内存分配概念,我希望这里有人可以详细解释它们,或者指出我可以链接到哪里可以找到像我这样的问题的解释。
char strs(char *s, char *k)
{
int flag=0;
do
{
if(*k=='\0') return (*(s-flag));
if(*s==*k)
{
k++;
flag++;
}
if(flag!=0 && *s!=*k)
{
k=k-flag;
}
s++;
} while(*s!='\0');
return('\0');
}
main()
{
char s[10],k[5];
printf("Please enter the main string: ");
scanf("%s",s);
printf("Please enter the key string: ");
scanf("%s",k);
if((strs(s,k))!='\0') printf("The pointer is at <<<%s>>> in %s",strs(s,k),s);
if((strs(s,k)=='\0')) printf("\nKey string not found, value of strs is %s", strs(s,k));
}