C/C++中substr函数的应用(简单讲解)

substr(字符串,截取开始位置,截取长度) //返回截取的字

substr('Hello World',0,1) //返回结果为 'H'  *从字符串第一个字符开始截取长度为1的字符串

substr('Hello World',1,1) //返回结果为 'H'  *0和1都是表示截取的开始位置为第一个字符

substr('Hello World',2,4) //返回结果为 'ello'

substr('Hello World',-3,3)//返回结果为 'rld' *负数(-i)表示截取的开始位置为字符串右端向左数第i个字符

测试:

select substr('Hello World',-3,3) value from dual;

 

附:java中substring(index1,index2)的简单用法

作用:从字符串索引(下标)为index1的字符开始截取长度为index2-index1 的字符串。

String str="Hello World";

System.out.println(str.substring(0,5));

打印结果为:Hello

下面给段C的代码详解,估计就懂了!

复制代码
 1 #include <string.h>
 2 #include <stdio.h>
 3 #include <stdlib.h>
 4 #include <assert.h>
 5 char* mysubstr(char* srcstr, int offset, int length)
 6 {
 7     assert(length > 0);
 8     assert(srcstr != NULL);
 9 
10     int total_length = strlen(srcstr);//首先获取srcstr的长度
11     //判断srcstr的长度减去需要截取的substr开始位置之后,剩下的长度
12     //是否大于指定的长度length,如果大于,就可以取长度为length的子串
13     //否则就把从开始位置剩下的字符串全部返回。
14     int real_length = ((total_length - offset) >= length ? length : (total_length - offset)) + 1;
15     char *tmp;
16     if (NULL == (tmp=(char*) malloc(real_length * sizeof(char))))
17     {
18         printf("Memory overflow . \n");
19         exit(0);
20     }
21     strncpy(tmp, srcstr+offset, real_length - 1);
22     tmp[real_length - 1] = '\0';
23     return tmp;
24 }
25 int main()
26 {
27     char srcstr[] = "this is a test string!";
28     char* tmp = mysubstr(srcstr, 8, 8);
29     printf("TEST: result = %s\n", tmp);
30     free(tmp);
31     return 0;
32 }
复制代码

 

posted @   Angel_Kitty  阅读(26222)  评论(1编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示
剑桥
14:14发布
剑桥
14:14发布
6°
南风
3级
空气质量
相对湿度
87%
今天
多云
4°/16°
周日
9°/18°
周一
大雨
8°/15°