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

新号别搞:字符+字符串+内存 函数

1、字符函数1.1 字符分类函数头⽂件ctype.h参数符合条件就返回真( !0 )譬如int islower ( int c );其他用法与之一致。大小写转化举例int i 0; char c; char str[] Test String.\n while (str[i]) { c str[i]; if (islower(c)) c - 32; putchar(c); i; } //【main】1.2 字符转换函数inttolower(intc );将传进去的参数的大写字母转小写inttoupper(intc );将传进去的参数的小写字母转大写大小写转换-toupperint i 0; char str[] Test String.\n; char c; while (str[i]) { c str[i]; if (islower(c)) c toupper(c); putchar(c); i; } //【main】2、字符串函数2.1strlensize_tstrlen(const char* str ); 头文件string.h统计字符串中\0 之前的字符的个数str 参数(指针)指向的字符串必须要以 \0 结束返回类型是 size_t 返回字符串的⻓度,打印用 %z举例使⽤const char* str abcdef; printf(%zd\n, strlen(str)); //【main】模拟实现计数器方式#include assert.h int my_strlen(const char * str) { int count 0;assert(str); while(*str) { count;str; } return count; }不创建临时变量计数器int my_strlen(const char * str) { assert(str); if(*str \0) return 0; else return 1 my_strlen(str1); }指针-指针int my_strlen(char *s) { assert(str); char *p s; while(*p ! \0) p; return p - s; }2.2 字符串拷贝2.2.1strcpychar*strcpy(char* destination,const char* source ); 头文件string.h拷贝到源头字符串中的\0 为⽌destination (指针) 必须⾜够⼤且可修改。source (指针) 必须以 \0 结束会将 \0 拷贝到 destination返回目标空间的起始地址举例使用char arr1[10] {0}; char arr2[] hello; strcpy(arr1, arr2); printf(%s\n, arr1); //【main】模拟实现1.参数顺序2.函数的功能停⽌条件3.assert4.const修饰指针5.函数返回值char* my_strcpy(char *dest, const char*src) { char *ret dest; assert(dest ! NULL src ! NULL); while((*dest *src)) ; return ret; }2.2.2strncpychar *strncpy (char *destination,const char *source, size_t num ); 头文件string.h返回目标空间的起始地址num从source指向的字符串中最多拷贝的字符个数举例使用char arr1[20] {0}; char arr2[] abcdefghi; char* str strncpy(arr1, arr2, 5); printf(%s\n, arr1); printf(%s\n, str); //【main】模拟实现2.2.3比较strcpy和strncpstrcpy函数拷贝到 \0 为⽌⽬标空间不够会越界。strncpy指定长度拷贝避免了 \0 的限制同样要考虑目标空间小。2.3 字符串追加2.3.1strcatchar*strcat(char* destination,const char* source ); 头文件string.hsource (指针)须以\0 结束,destination也要有 \0destination要够大且可修改不能追加自己举例使用har arr1[20] hello ; char arr2[] world; strcat(arr1, arr2); printf(%s\n, arr1); //【main】模拟实现char* my_strcat(char *dest, const char*src) { char *ret dest; assert(dest ! NULL); assert(src ! NULL); while(*dest) dest; while((*dest *src))//赋值把 src 指向的字符赋给 dest。 ; //移动dest、src 同时后移一位。 return ret; //判断检查赋值的字符是不是 \0 }2.3.2strncatchar *strncat (char *destination,const char *source,size_tnum ); 头文件string.h返回⽬标空间的起始地址num最多追加的字符的个数举例使用char arr1[20] hello ; char arr2[] world; char* str strncat(arr1, arr2, 5); printf(%s\n, arr1); printf(%s\n, str); //【main】模拟实现2.3.3比较strcat和strncatstrncat多一个参数strcat函数包含 \0都追加过去 strncat函数指定了追加的⻓度strncat函数中源字符串中⼀定会有 \0strncat更加灵活安全2.4 字符串比较2.4.1strcmpintstrcmp (const char *str1,const char *str2 ); 头文件string.h从两个字符串的第⼀个字符开始⽐较如果两字符的ASCII码值相等则⽐较下⼀个字符。直到遇到不相等的两个字符或者字符串结束。str1 、str2指针分别指向要⽐较的第⼀个及第二个字符串。举例使用char arr1[] abcdef; char arr2[] abq; int ret strcmp(arr1, arr2);printf(%d\n, ret); if(ret 0) printf(arr1 arr2\n); else if(ret 0) printf(arr1 arr2\n); else printf(arr1 arr2\n); //【main】模拟实现int my_strcmp (const char * str1, const char * str2) { int ret 0 ; assert(str1 ! NULL); assert(str2 ! NULL); while(*str1 *str2) { if(*str1 \0) return 0; str1; str2; } return *str1-*str2; }2.4.2strncmpintstrncmp (const char *str1,const char *str2,size_tnum ); 头文件string.h比较 str1和str2指向的两个字符串的内容最多⽐较num字符。str1、str2 指针指向⼀个比较的及另外⼀个⽐较的的字符串num最多比较的字符个数。举例使用char arr1[] abcdef; char arr2[] abcqw; int ret1 strncmp(arr1, arr2, 3); printf(%d\n, ret1); int ret2 strncmp(arr1, arr2, 4); printf(%d\n, ret2); //【main】2.4.3⽐较strcmp和strncmp参数不同strncmp可以⽐较任意长度strncmp函数更灵活安全2.5 其他字符串函数2.5.1 字符串查找strstrchar *strstr (const char *str1,const char *str2); 头文件string.h查找 str2 (指针) 指向的字符串在 str1 (指针) 指向的字符串中第⼀次出现的位置在⼀个字符串(str1) 中查找⼦字符串 (str2).举例使用char str[] This is a simple string; char * pch; pch strstr (str,simple); if (pch ! NULL) printf(%s\n, pch); else printf(查找的字符串不存在\n); //【main】模拟实现char * strstr (const char * str1, const char * str2) { char *cp (char *) str1; char *s1, *s2; if ( !*str2 ) //特殊情况str2是空字符串时 return((char *)str1); //直接返回str1 while (*cp) { s1 cp; s2 (char *) str2; while ( *s1 *s2 !(*s1-*s2) ) s1, s2; if (!*s2) return(cp); //返回第⼀次出现的起始 cp; } return(NULL); //找不到则返回NULL }2.5.2 分割修改原始字符串strtokchar *strtok(char *str,const char *delim); 头文件string.h功能参数返回值流程举例使用char arr[] 192.168.6.111; const char* sep .; const char* str NULL; char buf[30] {0}; strcpy(buf, arr); //将arr中的字符串拷⻉到buf中对buf的内容进⾏切割 for (str strtok(buf, sep); str ! NULL; str strtok(NULL, sep)) { printf(%s\n, str); } //【main】注意事项2.5.3 显示错误strerrorchar*strerror (interrnum ); 头文件string.h errno.herrnum 表⽰错误码得到对应的错误信息并返回错误信息字符串⾸字符的地址;只针对标准库中的函数发⽣错误后设置的错误码的转换;errnum传递的是errno(C语⾔中⼀个全局变量) 的值当库函数的调⽤发⽣错误的时候就会将本次错误的错误码存放在 errno 这个变量中使⽤这个全局变量需要包含⼀个头⽂件 errno.h返回 通过错误码得到的错误信息字符串的⾸字符的地址举例使用FILE * pFile NULL; //fopen函数以读的形式打开⽂件如果⽂件不存在则打开失败。 pFile fopen (unexist.ent, r); if (pFile NULL) { printf (错误信息是%s\n, strerror(errno)); return 1;//错误返回 } //【main】错误信息是No such file or directory2.5.4 显示错误perrorvoidperror (const char *str ); 头文件string.hperror 函数打印完参数部分的字符串后再打印⼀个冒号和⼀个空格再打印错误信息其使用与strerror相似举例使用FILE * pFile NULL; pFile fopen (unexist.ent, r); if (pFile NULL) { perror(错误信息是); return 1; } //【main】错误信息是: No such file or director3、内存函数1、
http://www.gsyq.cn/news/1373173.html

相关文章:

  • 千年盛世手游官网下载:千年盛世最新官方下载渠道
  • 小学期学习——第二周
  • Java国密SM2证书Unknown curve异常的三步绕过方案
  • SQL注入漏洞进阶篇
  • 医疗AI提示词设计与评估方法详解
  • C51中断服务中的寄存器保护机制与优化实践
  • PostgreSQL 15.7 CDC → Flink → Kafka 操作笔记
  • 机器学习周报四十六
  • 2026最新免费照片去水印App保姆级教程,这四款宝藏工具一看就会!
  • 数据库设计三大范式
  • 边缘存储优化:提升边缘节点的数据存储效率
  • GLM-5.1高速版:400 tokens/s,大模型速度革命
  • 【消息队列】Kafka深度解析:从原理到生产环境实战
  • 分布式Session管理完全指南
  • Spdlog 进阶:日志基本控制、日志格式控制、异步记录器
  • 从黑猩猩内战到人类关系:互动是系统的命脉,遗忘是文明的暗礁
  • Codex CLI高危漏洞CVE-2025-61260深度解析与工程化防御
  • 股市学习心得-技术指标学习(布林线+MACD)
  • 事业单位教育类考试人名考点速记笔记
  • 深度强化学习与控制 课程 第二周 课程总结
  • cann-learning-hub:昇腾CANN社区的学习中心
  • 别再让Ubuntu卡成PPT了!手把手教你给32G大内存服务器调整Swap分区(附永久生效配置)
  • PentestGPT:AI驱动的渗透测试工作流语义编排器
  • 用Python预测股价靠不靠谱?手把手带你看CNN-BiLSTM模型在沪深300上的完整复盘
  • 告别电费糊涂账:用Python和开源工具NILMTK,5分钟看懂你家每台电器用了多少电
  • 模块化触觉显示系统:气动软体机器人与信息论的创新结合
  • 基于SpringBoot+用户画像的商品个性化推荐毕业设计
  • JAVA---面向对象的三大特性
  • BP算法(反向传播)初步学习
  • Java基础总结(快速入门版)