当前位置:首页 » 编程语言 » c语言判断子串

c语言判断子串

发布时间: 2022-04-13 20:02:27

‘壹’ 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语言中如何判断给定的两个字符串是否互为子串

int strstr(char *s1,char *s2)
{
int i,flag=0;
if(strlen(s1)>=strlen(s2))
{
for(i=0;i<strlen(s2);i++)
if(s1[i]!=s2[i])
flag=1;
if(flag==1) return 0;
else
return 1;
}
return 0;
}

strstr(s1,s2)等于1的时候说明s2是s1的字串.

‘叁’ C语言指针判断是否为子串问题

#include<stdio.h>
intfunc(char*s1,char*s2)
{
char*p=s2;
for(;*s1;s1++)
{
for(;*p;p++)
{
if(*p==*s1)
{
break;
}
}
if(*p=='')
{
return0;
}
p++;
}
return1;
}
intmain(void)
{
chars1[100],s2[100];
while(scanf("%s%s",s1,s2)==2)
{
if(func(s1,s2))
{
puts("Yes");
}
else
{
puts("No");
}
}
return0;
}

‘肆’ c语言判断怎么判断字符串

参考代码如下:

#include<stdio.h>
intmain()
{
charstr[300]="2y1";
charc;
inti=0,flag=0;

c=str[0];
if(c=='Y'||c=='N'||c=='2'){
//M1先说话
flag=1;
for(;;){
switch(c){
case'Y':
case'N':
c=str[i+1];
if(c!='Y'&&c!='N'&&c!='2')
flag=0;
break;
case'2':
c=str[i+1];
if(c!='y'&&c!='n'&&c!='1'&&c!=0)
flag=0;
break;
case'y':
case'n':
c=str[i+1];
if(c!='y'&&c!='n'&&c!='1')
flag=0;
break;
case'1':
c=str[i+1];
if(c!='Y'&&c!='N'&&c!='2'&&c!=0)
flag=0;
break;
case0:break;
default:flag=0;
}
if(flag==0||str[i]==0)
break;
else{
++i;
c=str[i];
}
}
}
if(flag==1)
printf("%s是对话",str);
else
printf("%s不是对话",str);
return0;
}

‘伍’ C语言. 编写函数,判断在给定字符串中是否包含指定的子串

#include<stdio.h>
#include<string.h>
intmain(){
charstr[100],s[100],i,j,flag=0;
printf("请输入主串: ");
gets(str);
printf("请输入字串: ");
gets(s);
i=0,j=0;
while(i<strlen(str)&&j<strlen(s)){
if(str[i]==s[j]){//如果字符相同则两个字符都增加
i++;
j++;
}
else{
i=i-j+1;//主串字符回到比较最开始比较的后一个字符
j=0;//字串字符重新开始
}
if(j==strlen(s)){//如果匹配成功
flag=1;//字串出现
break;
}
}
if(flag==1)printf("%s中包含%s ",str,s);
elseprintf("%s中不包含%s ",str,s);
return0;
}

‘陆’ C语言定义一个函数,判断字符串中是否包含另一个子串!!!!!!急

调用strstr()函数就可以实现

#include<string.h>
#include<stdio.h>

intmain()
{
chars[]="12345678";
chars1[]="135";
chars2[]="567";

if(strstr(s,s1))
{
printf("ok ");
}
else
{
printf("no ");
}
//--以上显示no
if(strstr(s,s2))
{
printf("ok ");
}
else
{
printf("no ");
}
//--以上显示ok
return0;
}

‘柒’ 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语言 定义一个函数,判断某字符串中是否包含一个子串

intfind(char*source,char*target)//source为源字符串,target为子字符串,如找到则返回在源串中的位置,如未找到则返回-1,如果要改为找到返回1,把returni改为return1;
{
inti,j;
ints_len=strlen(source);
intt_len=strlen(target);
if(t_len>s_len)
{
return-1;
}
for(i=0;i<=s_len-t_len;i++)
{
j=0;
intflag=1;
if(source[i]==target[j])
{
intk,p=i;
for(k=0;k<t_len;k++)
{
if(source[p]==target[j])
{
p++;
j++;
continue;
}
else
{
flag=0;
break;
}
}
}
else
{
continue;
}
if(flag==1)
{
returni;
}
}
return-1;
}

‘玖’ C语言定义一个函数,判断字符串中是否包含另一个子串

intfind(char*source/*源串*/,char*target/*目标串*/)//找到返回位置,未找到返回-1
{
inti,j;
ints_len=strlen(source);
intt_len=strlen(target);
if(t_len>s_len)
{
return-1;
}
for(i=0;i<=s_len-t_len;i++)
{
j=0;
intflag=1;
if(source[i]==target[j])
{
intk,p=i;
for(k=0;k<t_len;k++)
{
if(source[p]==target[j])
{
p++;
j++;
continue;
}
else
{
flag=0;
break;
}
}
}
else
{
continue;
}
if(flag==1)
{
returni;
}
}
return-1;
}

‘拾’ c语言中如何判断两个字符串相等

可以使用库函数strcmp判断,具体如下:

strcmp是C语言比较字符串的库函数,形式为int strcmp(char *a, char *b);

该函数会对a和b的每个字符,按照ascii码值比较,如果二者完全相同返回0;如果a的ascii码值先出现较大者,会返回1;否则返回-1。

所以,要判断字符串相等,可以使用。

(10)c语言判断子串扩展阅读:

关于上述strcmp()函数比较字符串的例子

#include <stdio.h>

#include <string.h>

int main(void)

{

char str_1[] = "abc";

char str_2[] = "abc";

char str_3[] = "ABC";

if (strcmp(str_1, str_2) == 0)

printf("str_1 is equal to str_2. ");

else

printf("str_1 is not equal to str_2. ");

if (strcmp(str_1, str_3) == 0)

printf("str_1 is equal to str_3. ");

else

printf("str_1 is not equal to str_3. ");

return 0;

}

参考资料来源:字符串-网络

热点内容
电脑弹出脚本错误还能继续使用吗 发布:2025-01-20 21:42:29 浏览:585
安卓私密照片在哪里 发布:2025-01-20 21:41:05 浏览:4
同济复试编译原理 发布:2025-01-20 21:33:54 浏览:309
c语言判断字母 发布:2025-01-20 21:31:09 浏览:423
ftp服务器搭建linux 发布:2025-01-20 21:26:05 浏览:334
安卓手机浏览器如何翻译英文网页 发布:2025-01-20 21:21:01 浏览:422
刺客信条枭雄怎么调成低配置 发布:2025-01-20 21:20:51 浏览:709
nss存储 发布:2025-01-20 21:04:47 浏览:35
下载了怎么解压 发布:2025-01-20 20:55:22 浏览:180
c语言第八章答案 发布:2025-01-20 20:55:17 浏览:697