for(i=0,j=n-1;i<=j;i++,j--)
if(*(string+i)==*(string+j))
return (z=1);
else
return (z=0);
1 不要讲return与后面的换行分开,最好像我上面的一样
2 由于执行了for(;*string!='\0';string++); 导致string的值改变所以string不是指向数组的开头了
应把 if(*(string+i)==*(string+j)) 改为if(*(m+i)==*(m+j))
3 分析代码,你写的for循环只执行一次,只会判断数组第一个字符和最后一个字符是否相等。若相等返回1,否则返回0
string++在每个循环体结束是都执行一次。
可以把for循环转换成while循环:
while(*string!='\0'){
string++;
}
n=string-m; /*这样string不会指向'\0'的下一位*/
循环结束后string不是指向'\0'位置而是'\0'的下一位,因为无论*string!='\0'成立否,string++都会执行,还有for循环里边的if---else要括起来,不说正确与否,这是好的编程习惯!