|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
有没有哪儿位大佬能解释一下为什么当指针*s2跑完的时候while loop不会终止啊。代码
/*
#include <stdio.h>
#include <assert.h>
#include <string.h>
int subset(char *s1, char *s2);
int main(int argc, char **argv) {
printf("is_subsequence(\"bee\", \"abbreviate\") = %d\n",
subset("bee", "abbreviate"));
printf("is_subsequence(\"bee\", \"brake\") = %d\n",
subset("bee", "brake"));
return 0;
}
int subset(char *s1, char *s2) {
assert(s1);
assert(s2);
int i, length=strlen(s1);
while (*s2 && *s1) {
for (i=0;i<length;i++){
if (*s2==s1[i]){
s1++;
s2++;
break;
}
}
printf("s1=%s,s2=%c\n",s1,*s2);
s2++;
}
if (*s1){
return 0;
}
else {
return 1;
}
}
*/
printf测试结果
/*
s1=bee,s2=as1=ee,s2=bs1=ee,s2=rs1=e,s2=vs1=e,s2=is1=e,s2=as1=e,s2=ts1=,s2=is_subsequence("bee", "abbreviate") = 1s1=ee,s2=rs1=ee,s2=as1=ee,s2=ks1=e,s2=s1=e,s2=is1=e,s2=ss1=e,s2=_s1=e,s2=ss1=e,s2=us1=e,s2=bs1=e,s2=ss1=,s2=qis_subsequence("bee", "brake") = 1
*/
修改了你程序的几处错误,现在运行的结果与你的不同。由于不知道你这个程序是干啥的,没法再进一步了
- #include <stdio.h>
- #include <assert.h>
- #include <string.h>
- int subset(char *s1, char *s2);
- int main(int argc, char **argv)
- {
- printf("is_subsequence("bee", "abbreviate") = %d\n",
- subset("bee", "abbreviate"));
- printf("is_subsequence("bee", "brake") = %d\n",
- subset("bee", "brake"));
- return 0;
- }
- int subset(char *s1, char *s2)
- {
- int i,length;
- assert(s1);
- assert(s2);
- length = strlen(s1);
- while (*s2 && *s1)
- {
- for (i = 0;i < length;i++)
- {
- if (*s2==s1[i])
- {
- s1++;
- s2++;
- break;
- }
- }
- printf("s1=%s,s2=%c\n",s1,*s2);
- s2++;
- }
- if (*s1)
- {
- return 0;
- }
- else
- {
- return 1;
- }
- }
复制代码
|
|