c语言的一个函数问题:字符串t出现在字符串s的尾端
答案:3 悬赏:40 手机版
解决时间 2021-11-29 08:19
- 提问者网友:孤山下
- 2021-11-29 02:27
c语言的一个函数问题:字符串t出现在字符串s的尾端
最佳答案
- 五星知识达人网友:十鸦
- 2021-11-29 03:23
while (s[slen++])
slen--;
while (t[tlen++])
tlen--;
正如2楼所说会0101反复执行,所以我觉得把这两个循环改为:
while (s[slen++]);
slen--;
while (t[tlen++]);
tlen--;
这样就说的通了,是分别找出数组s[],t[]中第一个为0的元素位置。
因为while(s[slen++]),while(t[tlen++])这两个循环退出的条件是s[slen++]=0,t[tlen++]=0,不然的话继续往下执行判断;为什么还要执行slen--,tlen--呢,是因为执行了slen++和tlen++使得在找出为0元素位置之时slen和tlen都已经指向了下一个元素。
if(tlen>slen)return(0);这一句是如果tlen的0元素在数组中的位置,大于slen的0元素在数组中的位置,那么就返回0;
for (i=0;t[i]!='\0'&&t[i]==s[slen-tlen+i];i++);这个循环我觉得是进行数字匹配的,即如果t数组当中0元素之前的所有元素,与s数组当中0元素之前的tlen个元素,一一对应相等,直到第tlen+1个不相等的话退出循环,并且返回值1;如果不满足上述条件,则返回0。
所以这里我觉得将
if(i==tlen)
return 1;
else
return 0;
}
中的i==tlen改为i==tlen+1,就说的通了。
这样的话strend函数是用来匹配两个数组s,t,如果这两个数组同时含有以0结尾的相同的子串,记为ABCD...0;若这个子串还满足,对数组t,这个子串的串首为t[0],且在这两个数组中子串之后的第一个字符不再匹配,那么会返回1。不满足上述任何条件者,都会返回0。
不知道对不对...
slen--;
while (t[tlen++])
tlen--;
正如2楼所说会0101反复执行,所以我觉得把这两个循环改为:
while (s[slen++]);
slen--;
while (t[tlen++]);
tlen--;
这样就说的通了,是分别找出数组s[],t[]中第一个为0的元素位置。
因为while(s[slen++]),while(t[tlen++])这两个循环退出的条件是s[slen++]=0,t[tlen++]=0,不然的话继续往下执行判断;为什么还要执行slen--,tlen--呢,是因为执行了slen++和tlen++使得在找出为0元素位置之时slen和tlen都已经指向了下一个元素。
if(tlen>slen)return(0);这一句是如果tlen的0元素在数组中的位置,大于slen的0元素在数组中的位置,那么就返回0;
for (i=0;t[i]!='\0'&&t[i]==s[slen-tlen+i];i++);这个循环我觉得是进行数字匹配的,即如果t数组当中0元素之前的所有元素,与s数组当中0元素之前的tlen个元素,一一对应相等,直到第tlen+1个不相等的话退出循环,并且返回值1;如果不满足上述条件,则返回0。
所以这里我觉得将
if(i==tlen)
return 1;
else
return 0;
}
中的i==tlen改为i==tlen+1,就说的通了。
这样的话strend函数是用来匹配两个数组s,t,如果这两个数组同时含有以0结尾的相同的子串,记为ABCD...0;若这个子串还满足,对数组t,这个子串的串首为t[0],且在这两个数组中子串之后的第一个字符不再匹配,那么会返回1。不满足上述任何条件者,都会返回0。
不知道对不对...
全部回答
- 1楼网友:笑迎怀羞
- 2021-11-29 05:40
请把函数写完整
- 2楼网友:低音帝王
- 2021-11-29 04:37
写错了吧,slen的值在循环中一直0、1、0、1反复编,如果字符串不为空的,循环会一直继续下去。死循环。。。。楼主检查下是否贴错了。。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯