字符串的问题??
int Index(char S[], char T[], int pos)
{
int i, j, slen, tlen;
i = pos;
j = 0;
slen = strlen(S);
tlen = strlen(T);
while(i<slen && j<tlen)
{
if(S[i] == T[j])
{
i++;
j++;
}
else
{
i = i - j + 2; ?? ====> i = i - j;
j = 1; ?? ====> j = 0;
}
}
}
如果i = i -j + 2; j = 1改为 i = i - j; j = 0; 也可以.
这里如果不改i == 0, j == 0 时用 i = i - j + 2; j = 1;得到i == 2, j == 1;
我认为串T[0]就没法参加与S串的比较了,虽然得到的结果是正确的.不解???
问题点数:20、回复次数:5Top
1 楼arrowcy(长弓手)回复于 2005-04-03 10:52:53 得分 0
你是直接抄的书上的程序吧
抄错了Top
2 楼arrowcy(长弓手)回复于 2005-04-03 10:54:20 得分 10
书上是将s[0]和t[0]用于存储字符串长度的
而你这里把它当成字符了,而自己用C语言里面的标准字符串表示方式来计算字符串的长度
所以错了Top
3 楼arrowcy(长弓手)回复于 2005-04-03 10:57:25 得分 0
如果用C语言里面的字符串表示方法的话
那个应该改为i=i-j+1吧?Top
4 楼llf_hust()回复于 2005-04-03 11:34:13 得分 10
int Index(char S[], char T[], int pos)
{
int i, j, slen, tlen;
i = pos;
j = 0;
slen = strlen(S);
tlen = strlen(T);
while(i<slen && j<tlen)
{
if(S[i] == T[j])
{
i++;
j++;
}
else
{
i = i - j + 2; ?? ====> i = i - j; 改为:i = i-j+1;
j = 1; ?? ====> j = 0; 改为:j = 0;
}
}
}
Top
5 楼zhousqy(标准C匪徒)(甩拉,甩拉)回复于 2005-04-03 11:59:54 得分 0
markTop




