#include<stdio.h>
#include<string.h>
#include<malloc.h>
//定义一个指针型函数substr
char *substr(char *dest,char *src,int begin,int len)
{
int srclen=strlen(src); //取源字符串长度
if(begin>srclen||!srclen||begin<0||len<0)
dest[0]=‘\0‘; //当取子串的开始位置超过源串长度,或源串长度为0,或开始位置和子串的长度为从开始位置
//子串长度为非法(小于0)时,目标串置为空串
else
{
if(!len||(begin+len)>srclen)
len=srclen-begin+1; //当字符串长度为0或开始位置加字串长度大于源长度时,调整子串为从开始位置到源
//串结束的所有字符
memmove(dest,src+begin-1,len); //调用库函数memmove将子串从源串中移到目标串中
dest[len]=‘\0‘;
}
return dest;
}
void main()
{
char *dest;
char src[]="C Programming Languege";
if((dest=(char *)malloc(80))==NULL)
{
printf("no memory\n");
exit(1);
}
printf("%s\n",substr(dest,src,15,4));
printf("%s\n",substr(dest,src,15,0));
free(dest);
}
时间: 2024-10-11 06:39:42