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;
}
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;
}
相关文章推荐
- Sql版本除去html并截取指定长度的字符串
- 根据指定字符长度截取字符串(包含中英文)
- 截取url字符串中的指定长度字符
- 用C#截取指定长度的中英文混合字符串
- 用C#截取指定长度的中英文混合字符串的最终算法
- C语言生成指定长度随机字符串
- C#区分中英文按照指定长度截取字符串的方法
- C语言实现字符串拷贝 拷贝指定长度字符串 字符串连接
- Java 按指定长度截取字符串,考虑全角半角
- 区分全角和半角的字符串指定长度截取(或填充)
- asp.net 将指定字符串按指定长度进行截取并用其他字符串替换方法
- C#截取指定长度中英文字符串方法 (收藏)
- 在C#中截取指定长度的中文字符串
- C#指定长度截取字符串 并进行拼接。
- 用C#截取指定长度的中英文混合字符串
- jQuery截取指定长度字符串(收藏)
- c#中英文混合字符串截取指定长度
- jQuery截取指定长度字符串超出部分省略代码
- 在C#中截取指定长度的中文字符串