编写程序,读入两个字符串。判断较短的字符串是否在较长的字符串中出现,如果有,给出出现的起始位置。
代码:
#include <iostream>
using namespace std;
//查找big中出现smal的次数,pos数组记录出现的起始位置,因为可能出现多次,所以用数组
void findstr(char*big ,char* smal,int pos[],int *nmb)
{
int i,j,lenb,lens;
lenb = strlen(big);
lens = strlen(smal);
*nmb = 0;
if(lens > lenb)
return;
i = 0;
while(i < lenb-lens+1)
{
for (j = 0; j < lens;j++)
{
if(big[i+j] != smal[j]) //不区分大小写,如果区分大小写,则去掉tolower
break;
}
if (j == lens) //说明找到
{
pos[*nmb] = i;
(*nmb)++;
i += lens;
}else
i++;
}
}
int main()
{
char big[30] ={0};
char small[30] ={0};
int i,pos[20],nmb = 0;
cin >> big;
cin >> small;
findstr(big,small,pos,&nmb);
if(nmb <=0)
cout << "没有出现";
else
{
cout << "出现位置:";
for(i=0;i<nmb;i++)
cout << pos[i] << " ";
}
cout << endl;
return 0;
}