编写一个指针函数,求一字符串的子串,并返回子串的首地址。
2个回答
展开全部
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
char * subString(char * src,int start, int n) //start 为子串在源字符串中的起始位置,n为子串的长度
{
int length=0;
int i=0;
char *sub=NULL;
if(src==NULL)
return NULL;
length = strlen(src);
if(start <0 || start+n > length || n<=0)
return NULL;
sub = (char*)malloc(n+1);
while(n>0)
{
sub[i]=src[start];
i++;
start++;
n--;
}
sub[i]='\0';
return sub;
}
void main()
{
char * src = "abcdefg12345676777";
char *sub=NULL;
sub = subString(src,3,5);
printf("substring is :%s\n",sub);
free(sub);
}
#include<stdio.h>
#include<stdlib.h>
char * subString(char * src,int start, int n) //start 为子串在源字符串中的起始位置,n为子串的长度
{
int length=0;
int i=0;
char *sub=NULL;
if(src==NULL)
return NULL;
length = strlen(src);
if(start <0 || start+n > length || n<=0)
return NULL;
sub = (char*)malloc(n+1);
while(n>0)
{
sub[i]=src[start];
i++;
start++;
n--;
}
sub[i]='\0';
return sub;
}
void main()
{
char * src = "abcdefg12345676777";
char *sub=NULL;
sub = subString(src,3,5);
printf("substring is :%s\n",sub);
free(sub);
}
展开全部
int __fastcall string_in(char *str1,char *str2)
{
char a[30];
int i,j,sum;
j=0;
sum=0;
for (i=0;str1[i]!='\0';i++)
{
while (str2[j]!='\0')
{
if (str1[i]!=str2[j])
{
memset(a,0,30);
j=0;
break;
}
a[j]=str1[i];
j++;
i++;
if (strcmp(a,str2)==0)
{
j=0;
sum++;
}
}
}
return sum;
}
{
char a[30];
int i,j,sum;
j=0;
sum=0;
for (i=0;str1[i]!='\0';i++)
{
while (str2[j]!='\0')
{
if (str1[i]!=str2[j])
{
memset(a,0,30);
j=0;
break;
}
a[j]=str1[i];
j++;
i++;
if (strcmp(a,str2)==0)
{
j=0;
sum++;
}
}
}
return sum;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询