當前位置:首頁 » 編程語言 » 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;
}