网站首页 > 技术文章 正文
字符串处理函数
C语言中常用的字符串处理函数有以下几个:
1. strcpy(dest, src):将src字符串复制到dest字符串中。
2. strcat(dest, src):将src字符串追加到dest字符串的末尾。
3. strlen(str):返回字符串str的长度。
4. strcmp(str1, str2):比较两个字符串str1和str2,如果相等返回0,否则返回非0值。
5. strchr(str, c):在字符串str中查找字符c的位置,如果找到则返回指向该字符的指针,否则返回NULL。
6. strrchr(str, c):在字符串str中从后向前查找字符c的位置,如果找到则返回指向该字符的指针,否则返回NULL。
7. strstr(str1, str2):在字符串str1中查找子串str2的位置,如果找到则返回指向该子串的指针,否则返回NULL。
strspn()函数是C语言的一个字符串处理函数,用于计算一个字符串中第一个不包含在另一特定字符串中的字符前的字符数。
函数原型如下:
size_t strspn(const char *str1, const char *str2);
其中,str1是指向要被扫描的字符串,str2是指向包含合法字符的字符串。函数会检查str1中的每一个字符是否都在str2中,如果是,则继续;如果不是,则停止并返回之前已经检查过的字符数。
简单来说,这个函数可以用来找到两个字符串的公共部分的长度,或者说是str1中所有包含在str2中的字符所组成的子串的长度。
strcspn()函数是一个C语言的字符串处理函数,用于计算主字符串中从开头到第一个匹配字符的字符数。
函数原型如下:
size_t strcspn(const char *str1, const char *str2);
其中,str1是指向待处理的字符串,str2是指向要搜索的子字符串的指针。函数会在str1中寻找与str2中任一字符相符的第一个字符,并返回在此之前的所有字符数量。如果str1中不存在str2中的任何字符,则返回整个str1的长度。
注意,这个函数并不检查`str2`中的子字符串是否存在,它只是逐个比较每个字符而已。
10. strpbrk()函数是C语言中的一种字符串处理函数,用于查找某个字符集中的第一个字符出现的位置。
函数原型如下:
char *strpbrk(const char *str1, const char *charset);
其中,str1是指向被查找的字符串,charset是指向包含待查找字符的字符集的指针。
函数会遍历str1中的每一个字符,查看它们是否存在于charset中,当找到第一个存在的字符时,函数就会立即返回指向这个字符的指针。
如果str1中没有任何字符存在于charset中,那么函数就会返回NULL。
11. strrev(str):将字符串str中的字符顺序反转。
12. strtok(str, delim):使用分隔符delim将字符串str分割成多个子串,并返回第一个子串的指针。每次调用此函数时,都会更新内部状态以获取下一个子串。
13. memcpy(dest, src, n):将src的前n个字节复制到dest中。
14. memset(dest, c, n):将dest的前n个字节设置为c。
15. memcmp(str1, str2, n):比较两个内存区域str1和str2的前n个字节,如果相等返回0,否则返回非0值。
16. strdup(str):创建一个新字符串,其内容与str相同,并返回指向新字符串的指针。
17. strndup
字符串函数应用举例
#include <stdio.h>
#include <string.h>
int main() {
char str1[20] = "Hello, World!";
char str2[20];
// 复制字符串
strcpy(str2, str1);
printf("使用strcpy复制字符串: %s
", str2);
// 连接字符串
strcat(str1, " How are you?");
printf("使用strcat连接字符串: %s
", str1);
// 查找子串
char *pos = strchr(str1, 'W');
if (pos != NULL) {
printf("找到子串'W'的位置: %ld
", pos - str1);
} else {
printf("未找到子串'W'
");
}
// 比较字符串
int result = strcmp(str1, str2);
if (result == 0) {
printf("两个字符串相等
");
} else if (result < 0) {
printf("第一个字符串小于第二个字符串
");
} else {
printf("第一个字符串大于第二个字符串
");
}
//在参数 str 所指向的字符串中搜索最后一次出现字符 ch
const char str[] = "https://www.baidu.com";
const char ch = '.';
char *ret;
ret = strrchr(str, ch);
printf("|%c| 之后的字符串是 - |%s|\n", ch, ret);
// 查找子串位置
pos = strstr(str1, "World");
if (pos != NULL) {
printf("找到子串'World'的位置: %ld
", pos - str1);
} else {
printf("未找到子串'World'
");
}
//检索字符串 str1 中第一个不在字符串 str2 中出现的字符下标
int len;
const char str1[] = "ABCDEFG019874";
const char str2[] = "ABCD";
len = strspn(str1, str2);
printf("初始段匹配长度 %d\n", len );
//以str1为参照,比较字符串str2中的字符是否与str中某个字符相等(也就是检索str2中的字符是否在str1中存在),如果第一次发现相等,则停止并返回在str1中这个匹配相等的字符的索引值,失败则返回str1的长度。
char *str1="aaa";
char *str2="bbb";
int inttemp;
inttemp=strcspn(str1,str2);
//根据参数所指的字符串内容自动分配内存,并将字符串复制到该内存中,最后返回该内存的地址
char *str = "hello world";
char *copy_str = strdup(str);
free(copy_str);
//最多只复制n个字节。如果s大于n,则只复制n个字节,并添加一个终止的空字节('\0')
char *dup_str, *string = "abcdefg";
dup_str = strndup(string,3);
printf("%s\n", dup_str);
free(dup_str);
// 计算字符串长度
int len = strlen(str1);
printf("字符串长度: %d
", len);
// 转换大小写
for (int i = 0; i < len; i++) {
if (str1[i] >= 'a' && str1[i] <= 'z') {
str1[i] = str1[i] - 'a' + 'A';
} else if (str1[i] >= 'A' && str1[i] <= 'Z') {
str1[i] = str1[i] - 'A' + 'a';
}
}
printf("转换大小写后的字符串: %s
", str1);
return 0;
}
- 上一篇: C字符串搜索和替换算法(字符串查找替换c语言)
- 下一篇: Rust: 字符串总结,虽常见但非常重要
猜你喜欢
- 2024-10-05 Python基础知识——字符串(python字符串的常用方法)
- 2024-10-05 你会在 Python 中使用字符串吗?(python字符串需要用什么包裹)
- 2024-10-05 javascript内置对象总结 - String
- 2024-10-05 Python 中字符串和字符串处理的综合指南
- 2024-10-05 C++中的string用法(c++ string用法总结)
- 2024-10-05 Excel文本函数——CONCATENATE函数详解
- 2024-10-05 探究C语言中字符串大小和长度易错点
- 2024-10-05 【PythonTip题库300题】第47题:字符串中缺失的字母
- 2024-10-05 Rust: 字符串总结,虽常见但非常重要
- 2024-10-05 C字符串搜索和替换算法(字符串查找替换c语言)
- 10-02基于深度学习的铸件缺陷检测_如何控制和检测铸件缺陷?有缺陷铸件如何处置?
- 10-02Linux Mint 22.1 Cinnamon Edition 搭建深度学习环境
- 10-02AWD-LSTM语言模型是如何实现的_lstm语言模型
- 10-02NVIDIA Jetson Nano 2GB 系列文章(53):TAO模型训练工具简介
- 10-02使用ONNX和Torchscript加快推理速度的测试
- 10-02tensorflow GPU环境安装踩坑日记_tensorflow配置gpu环境
- 10-02Keye-VL-1.5-8B 快手 Keye-VL— 腾讯云两卡 32GB GPU保姆级部署指南
- 10-02Gateway_gateways
- 最近发表
-
- 基于深度学习的铸件缺陷检测_如何控制和检测铸件缺陷?有缺陷铸件如何处置?
- Linux Mint 22.1 Cinnamon Edition 搭建深度学习环境
- AWD-LSTM语言模型是如何实现的_lstm语言模型
- NVIDIA Jetson Nano 2GB 系列文章(53):TAO模型训练工具简介
- 使用ONNX和Torchscript加快推理速度的测试
- tensorflow GPU环境安装踩坑日记_tensorflow配置gpu环境
- Keye-VL-1.5-8B 快手 Keye-VL— 腾讯云两卡 32GB GPU保姆级部署指南
- Gateway_gateways
- Coze开源本地部署教程_开源canopen
- 扣子开源本地部署教程 丨Coze智能体小白喂饭级指南
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- mysqlany_value (79)
- static函数和普通函数 (84)
- el-date-picker开始日期早于结束日期 (76)
- js判断是否是json字符串 (75)
- c语言min函数头文件 (77)
- asynccallback (87)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 无效的列索引 (74)