char* substr(char *src,int start,int end){
創(chuàng)新互聯(lián)建站是一家專業(yè)提供洛陽企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、H5技術(shù)、小程序制作等業(yè)務(wù)。10年已為洛陽眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。
if(end=start) return NULL;
if (start=strlen(src)) return NULL;
char *p=src+start;
*(p+end)=0;
return p;
}
void substr(char s[],int n1,int n2)
{int i;br/char t[20]={\0};
for(i=n1;i=n1+n2;i++)
t=strcat(t,s[i]);
puts(t);
}
這個(gè)函數(shù)要用到
#includestdio.h
#includestring.h
#include stdio.h
#include stdlib.h
char *substr(const char *s,int n1,int n2)/*從s中提取下標(biāo)為n1~n2的字符組成一個(gè)新字符串,然后返回這個(gè)新串的首地址*/
{
char *sp=malloc(sizeof(char)*(n2-n1+2));
int i,j=0;
for (i=n1; i=n2; i++) {
sp[j++]=s[i];
}
sp[j]=0;
return sp;
}
int main(void)
{
char s[80],*sub;
scanf("%s",s);/*輸入原字符串s*/
sub=substr(s,0,5);/*提取s[0]~s[5]元素組成新子串,并保存到sub中*/
printf("substr:%s\n",sub);/*輸出sub*/
free(sub);/*釋放sub所占用的空間*/
return 0;
}
供參考
#include?stdio.h
#include?string.h
void?get_sub_str(char?*src,?char*?dst)
{
int?max_start?=?-1,?max_len?=?0;
int?start=-1,?len=0;
int?i;
for(i?=?0;?src[i];?i?++)
{
if(src[i]?=?'9'??src?[i]?=?'0')
{
if(start?!=?-1)
{
if(src[i]?==?src[i-1]?+?1)?continue;
len?=?i-start;
if(len??max_len)max_start?=?start,?max_len?=?len;
}
start?=?i;
}
else?if(start?!=?-1)
{
len?=?i-start;
if(len??max_len)max_start?=?start,?max_len?=?len;
start?=?-1;
}
}
if(start?!=?-1)
{
len?=?i-start;
if(len??max_len)max_start?=?start,?max_len?=?len;
start?=?-1;
}
if(max_len)?memcpy(dst,?src+max_start,?max_len);
dst[max_len]?=?0;
}
int?main()
{
char?buf[1024];
char?sub[1024];
gets(buf);
get_sub_str(buf,?sub);
puts(sub);
return?0;
}
#includestdio.h
#includestdlib.h
typedef?struct?hstring
{
char?*?ch;
int?length;
}?string;
void?substring(string?*?str1,string?str2,int?i,int?n)
{
if(n0?||?nstr2.length-i+1?||?i1?||?istr2.length)
printf("fail!");
if(str1-ch)?free(str1-ch);
if(!n)?{ /*?我的書里有這部分,你的沒有??*/?
str1-ch?=?NULL;
str1-length?=?0;
}?else?{
str1-ch=(char*)malloc(n*sizeof(char));
int?j;
for(j=0;?jn;?++j,++i)?{
str1-ch[j]=str2.ch[i-1];
}
str1-length=str2.length;
}
}
int?main()
{
string?str1;??/*?str1?的空間是動(dòng)態(tài)分配的?*/?
string?str2?=?{?/*?目標(biāo)串?str2?的空間是?已經(jīng)分配好的?*/?
"mnpqrxyz",
8
};
/*
string?str1,str2;
char?s1[5]="abcd";
str1.ch=s1;
str1.length=4;
char?s2[5]="mmmm";
str2.ch=s2;
str2.length=4;
*/
substring(str1,str2,1,3);
printf("%s",str1.ch);
return?0;
}