当前位置:首页 » 编程语言 » c语言怎么在字符串里搜索子串
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言怎么在字符串里搜索子串

发布时间: 2023-05-23 00:57:15

c语言编程:从键盘输入一个字符串,查找指定子串第一次出现的位置。求问题补充里的程序

原理类似于找素数,以下是具体代码(附注释):

#include<stdio.h>
#include<stdlib.h>
#include<math.h>

intSearchString(chars[],chard[]);

main()
{
chars[81];//储存一串字符
chard[10];//储存要查找的字符
intflag;
//输入一串字符
printf("Inputastring:");
gets(s);
//输入想要查找的字符
printf("Inputanotherstring:");
gets(d);
//调用函数,输出结果
flag=SearchString(s,d);
if(flag==-1)
printf("Notfound! ");
else
printf("Searchingresults:%d ",flag);

system("pause");
}

//函数功能:在字符数组s中查找子串d,返回d在s中首次出现的位置,若找不到,则返回-1
intSearchString(chars[],chard[])
{
intlocation=-1;
inti,j;
//第一层循环遍历被查找字符串
for(i=0;s[i]!='';i++)
{
//第二层循环遍历要查找的字符,若有不同的字符则退出该循环
for(j=0;d[j]!='';j++)
{
if(s[i+j]!=d[j])
break;
}
//判断第二层循环是否全部执行,若全部执行则表示字符相等,保存位置
if(d[j]=='')
{
location=i+1;
break;
}
}
returnlocation;
}

Ⅱ c语言如何查找字符串

C语言中的标准函数库中的strchr()函数可以实现查找字符串中的某个字符。

C语言strchr()函数:

查找某字符在字符串中首次出现的位置

头文件:#include <string.h>

strchr() 用来查找某字符在字符串中首次出现的位置,其原型为:

char * strchr (const char *str, int c);

【参数】str 为要查找的字符串,c 为要查找的字符。

strchr() 将键银会找出 str 字符串中第一次出现的字符 c 的地址,然后将该地址返回。

注意:字符串 str 的结束标志 NUL 也会被纳入检索范围,所以 str 的物亮渗组后一个字符也可以被定位。

【返回值】如果找到指定的字符则返回该字符所在地址,否则返回 NULL。

返回的地址是字符串在内存中随机分配的地罩脊址再加上你所搜索的字符在字符串位置。设字符在字符串中首次出现的位置为 i,那么返回的地址可以理解为 str + i。

提示:如果希望查找某字符在字符串中最后一次出现的位置,可以使用 strrchr() 函数。

Ⅲ 急急C语言查找子字符串

char* search(char* str, char ch)
{
char *pmax, *p, *p1;
int max;
pmax = NULL;
max = 0;
p = str;
while(1)
{
while(*p != NULL && *p !=ch) p++;
if(*p== ch)
{
for(p1=p++; *p==ch; p++);
if(p-p1 > max)
{
max = p-p1;
pmax = p1;
}
}
}
return pmax;
}

Ⅳ 用c语言在一个字符串中查找另一个字符串,并统计个数

例如,asdfgasfgasf,as,则输出3。

#include<stdio.h>

#include<stdlib.h>

intmain()

charS[100],T[20];

charch1,ch2;

printf("请输入主字符串:\n");

ch1=getchar();

inti=0;

while(ch1!='\n')

S[i]=ch1;

i++;

ch1=getchar();

printf("请输入要筛选的字符串:\n");

ch2=getchar();

intj=0;

while(ch2!='\n')

T[j]=ch2;

j++;

ch2=getchar();

intm,n;//m为S的下标,n为T的下标

m=0;

n=0;

intnum=0;//num用于记录选定单词出现的次数

while(m<=i&&n<=j)

if(S[m]==T[n])

m++;

n++;

else

m=m-n+1;

n=0;

if(n==j)

num++;

if(m==i+1)

printf("出现的次数是%d",num);

(4)c语言怎么在字符串里搜索子串扩展阅读:

while语句若一直满足条件,则会不断的重复下去。但有时,需要停止循环,则可以用下面的三种方式:

一、在while语句中设定条件语句,条件不满足,则循环自动停止。

如:只输出3的倍数的循环;可以设置范围为:0到20。

二、在循环结构中加入流程控制语句,可以使用户退出循环。

1、break流程控制:强制中断该运行区内的语句,跳出该运行区,继续运行区域外的语句。

2、continue流程控制:也是中断循环内的运行操作,并且从头开始运行。

三、利用标识来控制while语句的结束时间。

Ⅳ 在C语言中,要求编写程序在给定的字符串中查找指定的字符。

#include&lt;stdio.h&gt;

intmain()

{

inti,index,count;

chara,ch,str[80];

scanf("%c ",&a);

i=0;

index=-1;

count=0;

ch=getchar();

for(i=0;ch!=' ';i++){

str<i>=ch;

count++;

ch=getchar();

}

for(i=0;i&lt;count;i++)

if(a==str<i>)

index=i;

if(index!=-1)

printf("index=%d",index);

else

printf("NotFound");

return0;

}

(5)c语言怎么在字符串里搜索子串扩展阅读:

getchar()用法:

getchar()函数的作用是从计算机终端(一般为键盘)输入一个字岁清符。getchar()函数只能接收一个字符,其函数值就是从输入设备得到的字符。

例:

#include&lt;stdio.h&gt;

intmain(void)

{

intc;

/*

islinebuffered;thismeansitwill

notreturnuntilyoupressENTER.*/

while((c=getchar())!=' ')

printf("%c",c);

return0;

}

注:可以利用getchar()函数让程序调试运行结束后等待编程者乎猛前按下键盘才返回编辑界面,用法:在主函数结尾,return0;知圆之前加上getchar();

Ⅵ c语言求一个字符串里有几个子串

#include
#include
int substring(char *str,char *str1);//函数原型
int main(void)
{
char str[64]={0};
char str1[16]={0};
int i,j,x;
printf("please put the string\n");
gets(str);//输入的原字符串
puts(str);
printf("\n");
printf("please put the string1 \n");
gets(str1);//输入的字符串中的子串
puts(str1);
printf("\n");
i=strlen(str);//原字符串长度
j=strlen(str1);//子串长度
printf("the string lenth is %d\n",i);
printf("the string lenth is %d\n",j);
x=substring(str,str1);
printf("then anwser is %d\n",x);
return 0;
}
int substring(char *str,char *str1)
{
int x=0;
char *p;//任意附个初始值
do{
p=strstr(str,str1);//1.p指针指向strstr的返回值。3.再一次循环到 这里函数的参数发生变化,p重新指向strstr返回值,如此循环。
if(p != NULL) {
str=p+1;//2.str同样指向strstr返回值p的下一个地址。
x=x+1;
}
}while(p!=NULL);
return x;
}

另一种方法,不用库函数来实现,来自他人。。。
int substring1(char *str,char * str1,int n,int m)
{
int i,j=0,k;
int x=0;
for(i=0;i<=n-m;i++) {
k = i;
while (1) {
if (str[k] != str1[j] ) {
j=0;
break;
} else if (str1[j+1] == '\0') {
x++;
j=0;
break;
} else {
k++;
j++;
}
}
}
return x;
}