例如:
编写一个函数,它从一个字符串中提取一个子字符串。函数原型如下:
int substr(char dst[], char src[],int start, int len)
{}
目标是:从src数组起始位置向后偏移start个字符的位置开始,最多复制len个非NULL字符到dst数组。
在复制完毕之后,dst数组必须以NULL字节结尾。函数的返回值是存储于dst数组中的字符串的长度。
首先确定要提取的子字符串的长度,用指针指向该字符地址,这时需要判断剩余字符长度是否比len长,如果少于len则需让len等于n。
这时就可以复制src字符串中的字符到dst中,最后由于要求dst末尾以NULL结尾,所以让其末尾为‘\0’。
最后返回dst中字符串的长度!
代码实现如下:
#include<stdio.h>
#include<string.h>
int substr(char dst[],char src[],int start,int len)
{
char* p = src + start; //定义指针变量指向需要提取的字符的地址
int n = strlen(p); //求字符串长度
int i = 0;
if(n < len)
{
len = n;
}
while(len != 0)
{
dst[i] = src[i+start];
len --;
i++;
} //复制字符串到dst中
dst[i] = '\0';
return 0;
}
int main()
{
char dst[15];
char src[] = "ret_is_good_boy!";
substr(dst,src,5,19);
printf("%d\n",strlen(dst)+1); //输出dst字符串的长度
printf("%s\n",dst); //输出提取出来的字符串
return 0;
}
结果如下: