『壹』 用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、首先,定義兩個整型變數,保存判斷的數和同構串計數。