strncpy(dest,src,4);//注意一下这里假如改为5的话,可能会出现
//内存越界使得dest可能会占用其它模块的内存,从而导致错误发生;
//strncpy(dest,src+5,4);//从第5个字符开始截取;
printf(“dest: %s\n”,dest);
return 0;
}


引申一下从左边开始截取n个字符:



static char* left(char *dest,const char *src ,int n){
char *p=dest;
char *q=src;
int len=strlen(src);

if(n>len){
n=len;
}
while(n–) (p++)=(q++);
*(p++)=‘\0’;

return dest;
}


从右边开始截取n个字符:



static char* light(char *dest,const char *src ,int n){
char *p=dest;
char *q=src;
int len=strlen(src);

if(n>len){
n=len;
}
//int start=len-n;
//q=q+start;
q+=len-n;
while(n–) (p++)=(q++);
*(p++)=‘\0’;
return dest;
}


从中间某处截取一定长度的的子字符串:



static char* cut_substr(char *dest,const char *src ,char start,int n){
char *p=dest;
char *q=src;
chsr *temp=NULL;
int len=strlen(src);

if(start>=len || start<0){
return NULL;
}
temp=q+start;
if(n>strlen(temp)){//注意这里,截取长度如果超过了src剩余的长度则只截取到src的最后,以避免内存越界;
n=strlen(temp);
}
q+=start;
while(n–) (p++)=(q++);
*(p++)=‘\0’;
return dest;
}


以上方法基本上用指针来实现,但平时可以使用库函数来实现字符串的操作;


Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐