‘壹’ 用c语言判断一个字符串是否是另一个字符串的子串 不是返回0 是返回这个子串在另一字符串中位置
#include"stdio.h"
#include<string.h>
intf(char*a,char*b){
char*p=strstr(a,b);
returnp?p-a:-1;
}
intmain(intargv,char*argc[]){//验证主函数
char*a="1234567890",*b="4567";
(x=f(a,b))>=0?printf("%d ",x):printf("Nooverlap... ");
//printf("%d ",strcspn(a,b));//这是调用库函数直接求得
return0;
}
运行结果:
‘贰’ 在C语言中怎样判断一个字符串中是否包含另一个字符串
如果“一个字符串”全部是英文字符的话,只要开一个chars[128];的哈希表,每个在其中出现的字符按它的ASCII值,将相应的元素置为1;
然后扫描“另一个字符串”,检测每一个字符,在数组中对应元素的值是否为1。若这个串里的对应元素值全部为1,则是“包含另一个字符串所有的字符”。
这个算法的时间复杂度为O(n1+n2),n1和n2是二个字符串的长度。
#iclude<stdio.h>
int main()
{char s1[200],s2[200],s[128]={0};//初始化,所有字符均未出现
int i,k=1;
gets(s1);
gets(s2);
for(i=0;s[i];i++)
s1[s[i]]=1;//将字符串s1中出现的每一个字符,均“记录在案”
for(i=0;s2[i];i++)
if(!(s[s2[i]]))k=0;//若s2中有字符在“记录簿”中未出现,就作记录
if(k)printf("s1包含了s2中的全部字符 ");//根据是否有记录输出相应记录
elseprintf("s1未包含s2中的全部字符 ");
return 0;
}
‘叁’ C语言中怎么判断一个字符串包含在另一个字符串里面
#include<stdio.h>
#include<string.h>
intmain()
{
intflag;
chara[30]="iamtired";
charb[100];
scanf("%s",b);
if(strstr(b,a))
flag=1;
else
flag=0;
printf("flag=%d ",flag);
return0;
}
‘肆’ C语言程序,判断一个字符串是否是另一个字符串的子串,如是则输出第一次出现的位置
#include<stdio.h>
#include<string.h>
intiszstr(char*str,char*zstr);//zstr是str的子串返回出现的位置下标,否则返回-1
intmain()
{
intrenum;
charstr[100],zstr[100];
while(1)
{
str[0]=zstr[0]=0;
printf("输入母串:");
scanf("%s",str);
printf("输入可能的子串:");
scanf("%s",zstr);
renum=iszstr(str,zstr);
if(renum<0)
printf("不是子串!
");
else
printf("是子串,起始位置在下标%d处!
",renum);
}
return0;
}
intiszstr(char*str,char*zstr)
{
char*p1=str,*p2=NULL,*pSave=NULL,flag;
while(*p1)
{
if(*p1==zstr[0]&&strlen(p1)>=strlen(zstr))//先找到对应的首字符位置
{
pSave=p1;
p2=&zstr[0];
flag=1;
while(*p2)
{
if(*p1!=*p2)
{
flag=0;
break;
}
p1++;
p2++;
}
if(flag==1)
{
returnpSave-&str[0];
}
else
p1=pSave;
}
p1++;
}
return-1;
}
‘伍’ C语言中判断一个字符串是否为另一字符串的子串
你的if语句后面再加个if语句判断f是否等于1,等于1就不用循环了。你没判断,后面的字符又把你的1改回0了。修改后代码如下
#include<stdio.h>
#include<string.h>
main(){
chara[100],b[100];
inti,j,f=0;
gets(a);//cde
gets(b);//aabbcdefghbcd
for(i=0;i<strlen(b);i++){
if(b[i]==a[0]){
for(j=1;j<strlen(a);j++){
if(a[j]==b[i+j]){
f=1;
continue;
}else{
f=0;
break;
}
}
}
if(f==1){
break;
}
}
if(f==1)
printf("YES");
else
printf("NO");
}
使用库函数strstr
#include<stdio.h>
#include<string.h>
main(){
chara[100],b[100];
gets(a);
gets(b);
if(strstr(b,a)!=NULL){//第2个参数第1个参数的子串
printf("YES");
}else{
printf("NO");
}
}
‘陆’ C语言判断一个字符串是否是另一个字符串的子串
1、首先,定义两个整型变量,保存判断的数和同构串计数。