C语言实现 从一个字符串中提取一个子字符串
例如:
编写一个函数,它从一个字符串中提取一个子字符串。函数原型如下:
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结尾,所以让其末尾为‘ ’。
最后返回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] = " "; return 0; } int main() { char dst[15]; char src[] = "ret_is_good_boy!"; substr(dst,src,5,19); printf("%d ",strlen(dst)+1); //输出dst字符串的长度 printf("%s ",dst); //输出提取出来的字符串 return 0; }结果如下:
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。