当前位置: 首页 > news >正文

c语言常用的字符串函数简介概括

c语言常用的字符串函数

1、字符串的长度计算

size_t strlen(const char * s);
strlen("hello")返回5

功能是计算字符串的长度

2、字符串复制

char *strcpy(char*dest,const char *str);
char *strncpy(char *dest, const char *src, size_t n);

strcat:将src追加到dest的末尾(覆盖dest的\0)。
strncat:最多追加n个字符,确保dest以\0结尾。

3、字符串连接

char *strcat(char *dest, const char *src);
char *strncat(char *dest, const char *src, size_t n);

strcat:将src追加到dest的末尾(覆盖dest的\0)。
strncat:最多追加n个字符,确保dest以\0结尾。

4、字符串比较

int strcmp(const char *s1, const char *s2);
int strncmp(const char *s1, const char *s2, size_t n);

strcmp:按字典序比较s1和s2,返回值:
<0:s1 < s2
0:s1 == s2
> 0:s1 > s2
strncmp:比较前n个字符。

5、字符串查找

char *strchr(const char *s, int c);     // 查找字符首次出现位置
char *strrchr(const char *s, int c);    // 查找字符最后一次出现位置
char *strstr(const char *haystack, const char *needle);  // 查找子串
char *strtok(char *str, const char *delim);  // 字符串分割

6、其他的一些常用函数

int atoi(const char *str);      // 字符串转整数(`stdlib.h`)
long atol(const char *str);     // 字符串转长整数
double atof(const char *str);   // 字符串转双精度浮点数
char *strerror(int errnum);     // 获取错误码对应的错误信息
void *memset(void *s, int c, size_t n);  // 内存填充(可用于初始化字符串)

7、安全版本函数

为避免缓冲区溢出,C11标准引入了安全版本(非标准但安全)

char *strcpy_s(char *dest, rsize_t destsz, const char *src);
char *strcat_s(char *dest, rsize_t destsz, const char *src);

示例:

#include <stdio.h>
#include <string.h>int main() {char src[] = "hello";char dest[20];// 复制字符串strcpy(dest, src);printf("复制后: %s\n", dest);// 连接字符串strcat(dest, " world");printf("连接后: %s\n", dest);// 比较字符串printf("比较结果: %d\n", strcmp(dest, "hello world"));// 查找子串printf("子串位置: %s\n", strstr(dest, "world"));return 0;
}

这些函数均在<string.h>头文件中声明(除atoi等在<stdlib.h>中),使用时需包含相应头文件。

http://www.dtcms.com/a/282902.html

相关文章:

  • 【基于飞浆训练车牌识别模型】
  • 2.库操作
  • cookie和session、favicon.ico
  • 管家婆辉煌ERP登录报错:HTTP 错误 404.2
  • 嵌入式下快速傅里叶变换(FFT)C语言库kissfft
  • 图机器学习(9)——图正则化算法
  • 2. nth-child 和 nth-of-type 区别
  • xss-labs通关
  • k8s之持久化存储流程
  • 小架构step系列16:代码文档
  • 深度点评:2025 年机床钣金加工 TOP10 终极点评
  • 批量文件重命名工具 香菇重命名v0.2
  • Linux运维新手的修炼手扎之第21天
  • 调试bug记录
  • 如何用山海鲸轻松构建3D智慧大屏?
  • 【开源.NET】一个 .NET 开源美观、灵活易用、功能强大的图表库
  • 3DGS之COLMAP
  • 能行为监测算法:低成本下的高效管理
  • LIN通信协议入门
  • AI学习笔记三十一:YOLOv8 C++编译测试(OpenVINO)
  • 构建足球实时比分APP:REST API与WebSocket接入方案详解
  • PandaWiki与GitBook深度对比:AI时代的知识管理工具,选谁好?
  • 自动控制原理知识地图:舵轮、路径与导航图
  • 经典排序算法之归并排序(Merge Sort)
  • Linux内核IPv4路由查找:LPC-Trie算法的深度实践
  • 记录一道sql面试题3
  • 【Docker基础】Dockerfile多阶段构建:Multi-stage Builds详解
  • 【java面试day5】redis缓存-数据过期策略
  • MyBatis 之分页四式传参与聚合、主键操作全解
  • cv610_10B烧录,只能烧录到10%~20%,可能为DDRIO电压没有1.8v