题目:
编写函数strend(s,t)。如果字符串t出现在字符串s的尾部,则函数返回1;否则返回0.
自我解答:
编程思想:先获得s和t的结尾位置,并得到t的长度,在s中按照从后向前的顺序依次进行比较。
int strend(char *s, char *t)
{
int tLen;
while(*s)
s++;
tLen = 0;
while(*t)
{
t++;
tLen++;
}
while(tLen)
{
if(*--s != *--t)
break;
tLen--;
}
if(tLen)
return 0;
else
return 1;
}
第一个while循环结束后,s指向原字符串s的结尾字符'\0',第二个while循环结束后,t指向原字符串t的结尾字符'\0',并且tLen为字符串t的长度。第三个while循环开始倒序比对s和t的字符是否一致,并且是先对s和t进行自减操作再比较(如果先比较后自减,会导致t中的最前的字符无法得到比较),最后如果tLen为0则说明t的字符在s的尾部,返回结果1,否则返回0.
一个潜在的问题是:如果字符串t的长度大于s的长度时,此时会出现指针--s越界的情况。所以更为严谨的做法是把s的长度也计算出来,在开始比较之前先判断s和t的长度,如果