c和c++如何判断一个字符串包含另一个字符串
1、不使用库函数
暴力算法 第一行输入要查找的字符串,第二行输入被查找的字符串 返回要查找字符串在另一个字符串中出现的首位置
#include<stdio.h>
#include<string.h>
int main()
{
int i,j,la,lb;
int num = 0;
char a[100],b[200],c;
while ((c = getchar()) !=
)
{
a[num++] = c;
}
a[num] = ;//末尾以 结束
num = 0;
while ((c = getchar()) !=
)
{
b[num++] = c;
}
b[num] = ;//末尾以 结束
la = strlen(a);
lb = strlen(b);
for (i = 0; i<=lb-la; i++)
{
if (b[i] == a[0])
{
for (j = 0; j < la; j++)
{
if (b[i + j] != a[j])//不相等就退出,连续不能中断,否则重头开始判断
break;
}
if (j == la)
{
printf("%d
", i + 1);//输出在字符串中的位置
break;
}
}
}
return 0;
}
运行结果:
2.使用c语言中的库函数
string.h strstr函数 函数名: strstr 功 能: 在串中查找指定字符串的第一次出现 用 法: char *strstr(char *str1, char *str2); 说明:返回指向第一次出现str2位置的指针,如果没找到则返回NULL。
调用函数,判断返回值是否等于NULL,决定是否输出 如; char *p=".c"; //需要的子串 if(strstr(A,p)) printf("%s",A);
3.使用c++中的find()函数
if(str.find(“chi1 huo3 guo1”) != string :: npos) 表示str字符串包含"chi1 huo3 guo1" if(str.find(“chi1 huo3 guo1”) == string :: npos) 表示str字符串不包含"chi1 huo3 guo1" npos 是一个常数,用来表示不存在的位置 查找字符串a是否包含子串b,不是用strA.find(strB) > 0 而是 strA.find(strB) != string::npos
