|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <stdio.h>
#include <string.h>
#define N 60
#define M 10000
int main()
{
char a[N];
int i,j,k,sum=0, flag;
char b[M];
int longLength, lowLength, length;
printf("请输入一串字符串:");
scanf("%s",&a);
longLength = strlen(a);
printf("请输入另一串字符串:");
scanf("%s",&b);
lowLength = strlen(b);
for ( i = 0; i <= longLength-lowLength; i++)
{
if ( a[i] == b[0])
{
flag = i;
j = i;
while ( a[j] == b[j - i])
{
j++;
}
if ( j == ( i + lowLength))
{
printf("该字符串存在于长字符串中,位置为%d位到%d位\n", (flag + 1), (flag + lowLength));
sum+=1;
continue;
}
}
}
if(sum!=0)
{
return 0;
}
printf("该字符串不存在\n");
return 0;
}
本帖最后由 jhq999 于 2021-10-13 15:58 编辑
每个字符串后面都有结束标志‘\0’
而且
- while ( a[j] == b[j - i])
- {
- j++;
- }
复制代码
循环这么写数组越界是肯定的
|
|