重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
在纯C中好像没有,但是C++中很容易,你可以去查一下,网上有很多纯C实现的子串求法
10多年的新邱网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。网络营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整新邱建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。成都创新互联公司从事“新邱网站设计”,“新邱网站推广”以来,每个客户项目都认真落实执行。
string的substr函数是C++的,是STL库中的,而非纯C的实现,纯C的标准库中没有直接获得子串的方法,自己写很容易
#include stdio.h
#include stdlib.h
#include string.h
char *sub(char *s,int st,int len)
{char *s1;
int i;
s1=(char*)malloc(len);
for(i=0;ilen;i++)s1[i]=s[st+i-1];
s1[i]='\0';
return s1;
}
int main()
{int n,i,j;
char s[200];
scanf("%d%*c",n);
while(n--)
{printf("input a string:");
gets(s);
printf("i=");
scanf("%d",i);
printf("j=");
scanf("%d%*c",j);
if(i+jstrlen(s))printf("Error\n");
else printf("%s\n",sub(s,i,j));
}
return 0;
}
int find(char* source, char* target)//source为源字符串,target为子字符串,如找到则返回在源串中的位置,如未找到则返回-1,如果要改为找到返回1,把return i改为return 1;
{
int i,j;
int s_len=strlen(source);
int t_len=strlen(target);
if(t_lens_len)
{
return -1;
}
for(i=0;i=s_len-t_len;i++)
{
j=0;
int flag=1;
if(source[i]==target[j])
{
int k,p=i;
for(k=0;kt_len;k++)
{
if(source[p]==target[j])
{
p++;
j++;
continue;
}
else
{
flag=0;
break;
}
}
}
else
{
continue;
}
if(flag==1)
{
return i;
}
}
return -1;
}
#include stdio.h
#include stdlib.h
char *substr(const char *s,int n1,int n2)/*从s中提取下标为n1~n2的字符组成一个新字符串,然后返回这个新串的首地址*/
{
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;
}
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;
}