编写一个函数,它从一个字符串中提取一个子字符串
2016-06-11 18:50
162 查看
编写一个函数,它从一个字符串中提取一个子字符串。
函数原型如下:
int substr(char dst[], char src[],int start, int len){}
目标是:从 src 数组起始位置向后偏移 start个字符的位置开始,最多复制 len 个非NUL 字符到 dst数组。在复制完毕之后, dst 数组必须以 NUL字节结尾。函数的返回值是存储于 dst 数组中的字符串的长度。
注意指针使用前进行有效性判断(assert头文件为#include<stdio.h>)
代码如下:
函数原型如下:
int substr(char dst[], char src[],int start, int len){}
目标是:从 src 数组起始位置向后偏移 start个字符的位置开始,最多复制 len 个非NUL 字符到 dst数组。在复制完毕之后, dst 数组必须以 NUL字节结尾。函数的返回值是存储于 dst 数组中的字符串的长度。
注意指针使用前进行有效性判断(assert头文件为#include<stdio.h>)
代码如下:
#include<stdio.h> #include<assert.h> #include<string.h> #include<stdlib.h> void substr(char dst[], char src[], int start, int len) { assert(dst); assert(src); char *p = src + start; /*定义指针变量指向要提取字符串的地址 while(start) { src++;start--; } */ int n = strlen(p); printf("%d\n", n); /*求出要提取的字符串的长度 if(strlen(str)<len) { len=strlen(src); } */ int i = 0; if (n<len) { len = n; } while (len) { dst[i] = src[start + i];//提取出字符存放在数组dst中 i++; len--; } dst[i] = '\0'; } /*下面代码注意:for循环时不能写成i++,strat++,这样做会使条件(i<end-start)发生变化,造成无法便利完整个字符串。(此处end为子字符串终止时数组标号) void substr(char dst[],char src[],int start,int end) { int i; for(i=0;i<end-start+1;i++) { dst[i]=src[start+i]; } dst[end-start+1]='\0'; } */ int main() { char src[] = "I_love_world!"; char dst[20]; int len, start; printf("请输入要提取字符串的开始处和长度\n"); scanf("%d%d", &start, &len); substr(dst, src, start-1, len);//传的是下标,故减1 printf("%d\n", strlen(dst));//输出要提取的字符串的长度 printf("%s\n", dst);//输出提取的字符串 system("pause"); return 0; }本文出自 “Scen” 博客,请务必保留此出处http://10741357.blog.51cto.com/10731357/1708223
相关文章推荐
- C语言:编写strcpy函数
- 两个整数二进制表达中,有多少个位(bit)不同
- 编写函数返回值value的二进制模式从左到右翻转后的值
- 一组数据中只有一个数字出现一次,其他数成对出现,找出这个数
- 在字符串中找出第一个只出现一次的字符
- 字符数组的内容为:&quot;student a am i&quot;;,将数组的内容改为:&quot;i am a student&quot;
- 字符串替换空格
- 实现一个函数,可以左旋字符串中的k个字符
- 统计输入字符串中: 各个数字、空白字符、以及其他所有字符出现的次数
- haproxy实现mysql从库负载均衡
- 网络 HTTP协议中的Keep-ALive 及消息报头字段总结
- C语言打印100 ——200之间的素数
- C语言判断1000—2000年之间的闰年
- C语言中不允许创建临时变量,交换两个数的内容
- C语言中写一个函数返回参数二进制中 1 的个数
- C语言求两个数中最大公约数
- 获取一个数二进制序列中所有的偶数位和奇数位,分别输出二进制序列
- 线性代数的本质
- ROS_Kinetic_15 ROS使用Qt
- Express in Action读书笔记