您的位置:首页 > 编程语言 > C语言/C++

C语言截取指定长度字符串

2009-10-17 08:08 351 查看
/*
destin : 返回字符串。
source : 源字符串。
start : 开始截取的位置。(取值从0开始,保持C字符串的特点;若start为负数,则表示从右往左截取。)
maxlen : 截取的长度。(长度超过字符串的长度,按字符串实际长度计算。)
*/
char *substring(char *destin, char *source, int start, int maxlen)
{
char *p;
char *address;
int n = 0; /*字符串的长度*/
int oldstart;
int i;

assert((destin!=NULL) && (source !=NULL));

address = destin;
/*求字符串长度*/
p = source;
while (*p++ != '/0')
{
n++;
}

/*若start为负数,则从后往前*/
if(start < 0)
{
/*如果开始的位置超过字符串长度,则不进行截取*/
if(-start > n-1)
{
return NULL;
}
oldstart = start;
start = n + start-maxlen+1;
if(start < 0)
{
start = 0;
maxlen += oldstart;
}
}

/*如果开始的位置超过字符串长度,则不进行截取*/
if(start > n-1)
{
return NULL;
}

if(start+maxlen > n)
{
maxlen = n - start;
}

for(i=0, p = source; i<maxlen; i++)
{
*destin++ = *(p+(start++));
}
*destin = '/0';

return address;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: