【发布时间】:2012-02-17 18:32:04
【问题描述】:
检查第二个字符串是否是第一个字符串的子字符串的程序。它在所有情况下都显示“是”,此外,每当我将第二个字符串作为“q**q”时,我都会收到运行时错误,为什么会这样..? * 代表任何字母。
#include<stdio.h>
#include<conio.h>
#include<string.h>
int main()
{
char str1[20], str2[20];
int l1, l2, i1, i2=0;
gets(str1);
gets(str2);
l1=strlen(str1);
l2=strlen(str2);
if(l1>=l2)
{
for(i1=0; i1<=l1-l2+i2, i2<l2; i1++)
{
if(str2[i2]==str1[i1])
i2++;
}
if(i2==l2)
printf("Yes");
else
printf("No");
}
else
printf("No");
getch();
return 0;
}
【问题讨论】:
-
你的代码真的是这样缩进的吗?先修复它,它会更具可读性。
-
你可以使用
char *strstr( const char *s1, const char *s2)在string.hlink中定义的函数。或者您正在努力实现这一目标以学习和练习 C? -
要找到这样的错误,你应该使用调试器,看看错误发生在哪里,此外,尽量不要使用带有l和1的变量,它看起来一样,而且很混乱。我建议您阅读“代码完整”,这是一本很棒的书,它将为您提供代码可读性的最佳实践
标签: c string substring runtime-error