新闻详情

新闻详情

首页 / 资讯中心 / 详情

C语言-指针实现string库函数内容

发布时间:2026/8/31 0:11:05来源:尧图网络
C语言-指针实现string库函数内容
string库里主要有以下几种函数是日常使用比较多的strlen、strcpy、strncpy、strcat、strncat、strcmp、strncmpstrlen原型如下返回为typedefine的size_t类型实际为long int型参数为字符串的长度。size_t strlen(const char *s);size_t Strlen(const char *s) { size_t i 0; while(*(si)!\0) i; return i; }接收一个常量字符串指针返回字符串有效字符个数不统计末尾结束符\0返回类型为无符号整数size_t。const char *s传入字符串首地址const保证函数内不会修改原字符串内容只读访问。size_t i 0;定义计数器 i初始值 0用来记录已经遍历过的字符数量。当访问到内存中值为\0的终止符时循环条件不成立直接跳出循环。return i;此时 i 的值就是\0之前所有有效字符的总数和标准strlen返回值完全一致strcpy原型如下把 src 整串包含\0复制到 dest覆盖原有内容。char *strcpy(char *dest, const char *src);char *Strcpy(char *dest,const char *src) { char *ret dest; while(*src ! \0) { *dest *src; dest; src; } *dest \0; return ret; }函数首先备份目标字符串 dest 的起始地址至 ret 变量避免后续指针偏移后丢失首地址随后进入循环判断源指针 src 指向内容是否不为结束符 \0若满足条件则将 src 当前字符赋值给 dest 对应位置再同时将两个指针向后自移一位继续拷贝直至读取到源字符串终止符退出循环紧接着在 dest 当前指向位置手动赋值 \0 保证目标字符串格式合法最后返回预先保存的目标数组首地址。strncpy最多拷贝n个字节使用方法和函数原型如下src 长度 ≤ n正常拷贝 带上\0src 长度 n只拷 n 个字符不会自动补 \0char *strncpy(char *dest, const char *src, size_t n);char *Strncpy(char *dest,const char *src,size_t n) { char *ret dest; while(*src ! \0 n0) { *dest *src; dest; src; n--; } while(n) { *dest \0; n--; dest; } return ret; }首先将目标地址 dest 备份到 ret 指针用于最终返回随后进入第一层循环循环条件同时判定源指针未指向字符串结束符且剩余可拷贝长度 n 大于 0满足条件时将源指针当前字符赋值给目标指针对应内存两个指针同步向后偏移一位并将计数 n 减一当源字符串提前结束或拷贝达到指定长度 n 时退出第一层循环接着进入第二层循环对剩余未使用的 n 个字节全部填充赋值为 \0最后返回最初保存的目标数组起始地址。strcat字符串拼接原型如下找到 dest 末尾的\0把 src 追加在后面自动追加新\0。char *strcat(char *dest, const char *src);char *Strcat(char *dest,const char *src) { char * ret dest; while(*dest ! \0) dest; while(*src ! \0) { *dest *src; dest; src; } *dest \0; return ret; }先备份目标字符串起始地址到 ret 指针以便最终返回第一个循环不断向后移动 dest 指针直至找到目标字符串原本的 \0 结束位置随后开启第二个循环将源字符串 src 逐个字符赋值到 dest 当前位置每完成一次赋值就同步递增 dest 与 src 指针直至遍历完源字符串所有有效字符循环结束后在 dest 当前地址手动写入 \0 保证拼接后的字符串合规最后返回最初保存的 dest 首地址方便链接调用。strncat指定字符长度拼接用法和原型如下最多追加 n 个字符一定会在末尾自动补上 \0char *strncat(char *dest, const char *src, size_t n);char *Strncat(char *dest,const char *src,size_t n) { char * ret dest; while(*dest) dest; while(*src n) { *dest *src; dest; src; n--; } *dest \0; return ret; }首先将目标字符串起始地址备份至 ret 指针用于最终返回通过第一个 while 循环持续后移 dest 指针定位到原目标字符串末尾的结束符位置随后进入第二个循环在源字符串未遍历完毕且可追加长度 n 大于 0 的条件下逐个将 src 指向字符赋值给 dest 内存单元同时两个指针同步向后偏移、计数 n 递减当源字符串读取结束或是达到最大追加长度 n 时终止拷贝循环紧接着在 dest 当前指向位置强制写入字符串结束符 \0 确保拼接结果为合法 C 语言字符串最后返回预先保存的目标数组首地址测试结果如下strcmp整串字符串大小比较主要用法如下返回 0两个字符串完全相等返回 0s1 大于 s2返回 0s1 小于 s2。int strcmp(const char *s1, const char *s2);int Strcmp(const char *s1,const char *s2) { while(*s1 *s2 *s1 ! \0 *s2 ! \0) { s1; s2; } return *s1-*s2; }直接接收两个只读字符串指针 s1 和 s2进入循环判定当前两个指针指向字符相等且均未遍历到各自字符串结束符时同步将两个指针向后偏移一位继续对比一旦出现字符不相等或任意一方抵达字符串末尾就退出循环最终返回当前 s1 指向字符 ASCII 值减去 s2 指向字符 ASCII 值的差值返回值为 0 代表两字符串完全一致大于 0 代表 s1 大于 s2小于 0 代表 s1 小于 s2strncmp只比较前 N 个字符int strncmp(const char *s1, const char *s2, size_t n);int Strncmp(const char *s1,const char *s2,size_t n) { while(*s1 *s2 *s1 *s2 n1) { s1; s2; n--; } return *s1-*s2; }接收两个只读字符串指针与无符号长度参数 n循环条件判定当前两指针字符相等、均未到达字符串结束符且剩余可比较次数大于 1 时同步向后移动两个字符指针并递减计数 n不满足任一条件则跳出循环最终返回当前 s1 指向字符与 s2 指向字符的 ASCII 码差值差值为 0 说明指定前缀内容完全相同正数代表 s1 对应位置字符更大负数则代表 s2 更大测试部分结果如下
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Hypermesh固定边界条件设置详解:自由度、网格质量与求解器 2026/8/31 21:34:24

Hypermesh固定边界条件设置详解:自由度、网格质量与求解器

1. 固定边界条件到底在约束什么?先想清楚自由度 很多人第一次在 Hypermesh 里做固定边界条件时,会直接选择若干个节点,然后点击 “create”,看到模型上出现一组约束符号,就以为任务完成了。等模型提交到求解器一算&…

阅读更多 →
Simulink软件在环仿真SIL详解:配置流程与MIL批量对比方法 2026/8/31 21:34:24

Simulink软件在环仿真SIL详解:配置流程与MIL批量对比方法

如果你已经做过 MBD(基于模型的设计)开发,那么对 MIL、PIL、HIL 这三个缩写不会陌生。但很多人在搭验证流程时,会把软件在环仿真(Software-in-the-Loop,SIL)这一环忽略掉,或者干脆把…

阅读更多 →
基于YOLOv5的DMS驾驶员监控系统设计与PyQt实时检测实现 2026/8/31 21:34:24

基于YOLOv5的DMS驾驶员监控系统设计与PyQt实时检测实现

简介:本资源面向智能交通、车载视觉与AI安全检测领域的开发者及高校研究者,提供一套完整的驾驶员分神行为检测解决方案,聚焦抽烟、打电话、喝水、吃东西四类高危驾驶行为识别。资源包含已标注的5000余张高质量图像数据集,按train/…

阅读更多 →
Windows 本地智能体 Hermes Agent 落地教程,梳理安装卡顿闪退解决思路 2026/8/31 21:34:24

Windows 本地智能体 Hermes Agent 落地教程,梳理安装卡顿闪退解决思路

🔍前言 不少想要体验 Hermes Agent 办公能力的使用者,往往会被复杂的环境配置拦住使用脚步。手动下载匹配依赖、反复调整系统目录、处理命令行持续报错、修复权限异常、补全丢失核心文件等一系列操作,对普通使用者而言门槛较高,很…

阅读更多 →
一星如月GEO白皮书:第08章|用户—人工智能决策对齐:差异不等于缺口 2026/8/31 21:34:24

一星如月GEO白皮书:第08章|用户—人工智能决策对齐:差异不等于缺口

一、两张地图相减,得不到GEO(生成式引擎优化)答案当User-DVM(用户决策变量地图)和AI-DVM(人工智能决策变量地图)都建立后,最直观的做法是比较变量:用户重视但人工智能没有…

阅读更多 →
扎心现实!越来越多外包程序员工资,比正式员工还高 2026/8/31 21:31:23

扎心现实!越来越多外包程序员工资,比正式员工还高

最近发生了一件在程序员圈子里传得沸沸扬扬的事。一位在上海某家中等规模工厂工作的程序员小哥,无意间看到了隔壁外包同事的工资条,心情顿时就变得很糟糕——人家的月薪居然比他这个正式员工还要高出好几百块!换作是谁,碰到这种情…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞