69,382
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <string.h>
#define M 100
int function(char *a,char *b)
{
char *p=NULL,*q=NULL;
int k=0;
int m=strlen(a),n=strlen(b);
for(int i=0;i<m;i++)
{
p=strstr(a,b);//获取b的位置等同于存在一个字符串b
if(p)
{
k++;
q=p+n;//截取字符之后索引应到达的位置
strcpy(a,q);//将源字符串缩进到比较完毕之后的位置
a[strlen(a)]='\0';
q=NULL;//清空索引
p=NULL;
}
else
break;//搜索不到直接退出
}
return k;
}
char *string_in(char *a,char *b)
{
char *q=NULL,buf[M];
for(int i=0;i<strlen(a);i++)
{
if(b[0]==a[i])
{
q=a+i;//截取字符之后索引应到达的位置
strncpy(buf,q,strlen(b));//将源字符串缩进到比较完毕之后的位置
buf[strlen(b)]='\0';
if(!strcmp(buf,b))
return q;
}
}
return NULL;
}
int main(void)
{
char a[M],b[M],*p=NULL;
while(gets(a)!=NULL&&gets(b)!=NULL)
{
p=string_in(a,b);
if(p)
printf("a中存在b字符串!\n");
else
printf("a中不存在b字符串!\n");
printf("a中含有%d个字符串b\n",function(a,b));
}
return 0;
}
其实你的代码有一个问题,只是证明存在某个字符串,就没要统计其个数,有一个也是存在,多个也是存在
所以判断多次只是造成资源浪费,使效率低下
#include <stdio.h>
#include <string.h>
#define M 100
char *string_in(char *a,char *b)
{
char *q=NULL,buf[M];
for(int i=0;i<strlen(a);i++)
{
if(b[0]==a[i])
{
q=a+i;//截取字符之后索引应到达的位置
strncpy(buf,q,strlen(b));//将源字符串缩进到比较完毕之后的位置
buf[strlen(b)]='\0';
if(!strcmp(buf,b))
return q;
}
}
return NULL;
}
int main(void)
{
char a[M],b[M],*p=NULL;
while(gets(a)!=NULL&&gets(b)!=NULL)
{
p=string_in(a,b);
if(p)
printf("a中存在b字符串!\n");
else
printf("a中不存在b字符串!\n");
}
return 0;
}
#include <stdio.h>
#include <string.h>
#define M 100
char *string_in(char *a,char *b)
{
char *q=NULL;
for(int i=0;i<strlen(a);i++)
{
if(b[0]==a[i])
{
q=a+i;
for(int j=1;i<strlen(b)&&a[i+1]==b[j];i++,j++);
if(a[i]==b[strlen(b)-1])
return q;
else
return NULL;
}
}
return NULL;
}
int main(void)
{
char a[M],b[M],*p=NULL;
while(gets(a)!=NULL&&gets(b)!=NULL)
{
p=string_in(a,b);
if(p)
printf("a中存在b字符串!\n");
else
printf("a中不存在b字符串!\n");
}
return 0;
}
#include <stdio.h>
#include <string.h>
#define M 100
char *string_in(char *a,char *b)
{
char *q=NULL;
q=strstr(a,b);
if(q)
return q;
else
return NULL;
}
int main(void)
{
char a[M],b[M],*p=NULL;
while(gets(a)!=NULL&&gets(b)!=NULL)
{
p=string_in(a,b);
if(p)
printf("a中存在b字符串!\n");
else
printf("a中不存在b字符串!\n");
}
return 0;
}
见笑了
#include <iostream>
using namespace std;
char *string_in(char *str1,char *str2,int len_s1, int len_s2);
int main(){
cout << hex << (int)string_in("hats","at",4,2) << endl;
system("pause");
return 0;
}
char *string_in(char *str1,char *str2,int len_s1, int len_s2){
int flag;
if(len_s2 > len_s1){
return 0;
}
else{
for(int i = 0; i < len_s1-len_s2; i++){
flag = 1;
for(int j = 0, k = i; j < len_s2; j++, k++){
if(1 == flag && str1[k] == str2[j]){
//flag = 1;
}
else{
flag = 0;
}
}
if(1 == flag){
return str1 + i;
}
}
}
return 0;
}