C语言——J /字符函数和字符串函数

前言:在编程的过程中,我们经常要处理字符和字符串,为了⽅便操作字符和字符串,C语⾔标准库中提供了⼀系列库函数,接下来我们就学习⼀下这些函数。

一、字符分类函数

C语⾔中有⼀系列的函数是专⻔做字符分类的,也就是⼀个字符是属于什么类型的字符的。这些函数的使⽤都需要包含⼀个头⽂件是 ctype.h

//函数        //如果他的参数符合下列条件就返回真
1、iscntrl    任何控制字符
2、isspace    空白字符:空格 ,换页\f,换行\n,回车\r,水平制表符\t,垂直制表符\v
3、isdigit    十进制数字0 ~ 9
4、isxdigit   十六进制数字,包括所有十进制数字,小写字母a ~ f,大写字母A ~ F
5、islower    小写字母a ~ z
6、isupper    大写字母A ~ Z
7、isalpha    字母a ~ z或A ~ Z
8、isalnum    字母或数字,A ~ Z/a ~ z/0 ~ 9
9、ispunct    标点符号,任何不属于数字或者字母的图形字符(可打印)
10、isgraph   任何图形字符
11、isprint   任何可打印字符,包括图形字符和空白字符

这些函数的使⽤⽅法⾮常类似,我们就讲解⼀个函数的事情,其他的⾮常类似:

1 int islower ( int c );

islower 是能够判断参数部分的 c 是否是⼩写字⺟的。
通过返回值来说明是否是⼩写字⺟,如果是⼩写字⺟就返回非0的整数,如果不是⼩写字⺟,则返回0。

练习:写⼀个代码,将字符串中的⼩写字⺟转⼤写,其他字符不变。

#include <stdio.h>
#include <ctype.h>
int main()
{int i = 0;char str[] = "Test String.\n";char c;while (str[i]){c = str[i];if (islower(c))c -= 32;putchar(c);i++;}return 0;
}


二、字符转换函数

C语⾔提供了2个字符转换函数:

int tolower ( int c ); //将参数传进去的⼤写字⺟转⼩写
int toupper ( int c ); //将参数传进去的⼩写字⺟转⼤写

上⾯的代码,我们将⼩写转⼤写,是-32完成的效果,有了转换函数,就可以直接使⽤ tolower 函
数。

#include <stdio.h>
#include <ctype.h>
int main()
{int i = 0;char str[] = "Test String.\n";char c;while (str[i]){c = str[i];if (islower(c))c = toupper(c);putchar(c);i++;}return 0;
}


三、strlen 的使用和模拟实现

1 size_t strlen ( const char * str );

• 字符串以 '\0' 作为结束标志,strlen函数返回的是在字符串中 '\0' 前⾯出现的字符个数(不包
含 '\0' );
• 参数指向的字符串必须要以 '\0' 结束;
• 注意函数的返回值为size_t,是⽆符号的( 易错 );
• strlen的使⽤需要包含头⽂件;
• 学会strlen函数的模拟实现。
 

#include <stdio.h>
#include <string.h>
int main()
{const char* str1 = "abcdef";const char* str2 = "bbb";if (strlen(str2) - strlen(str1) > 0){printf("str2>str1\n");}else{printf("srt1>str2\n");}return 0;
}

⽅式1:

//计数器⽅式
int my_strlen(const char* str)
{int count = 0;assert(str);while (*str){count++;str++;}return count;
}

⽅式2:
 

//不能创建临时变量计数器
int my_strlen(const char* str)
{assert(str);if (*str == '\0')return 0;elsereturn 1 + my_strlen(str + 1);
}

⽅式3:

//指针-指针的⽅式
int my_strlen(char* s)
{assert(str);char* p = s;while (*p != ‘\0’)p++;return p - s;
}


四、strcpy 的使用和模拟实现

1 char* strcpy(char * destination, const char * source );

• 源字符串必须以 '\0' 结束;
• 会将源字符串中的 '\0' 拷⻉到⽬标空间;
• ⽬标空间必须⾜够⼤,以确保能存放源字符串;
• ⽬标空间必须可修改;
• 学会模拟实现。
strcpy的模拟实现:

//1.参数顺序
//2.函数的功能,停⽌条件
//3.assert
//4.const修饰指针
//5.函数返回值
//6.题⽬出⾃《⾼质量C/C++编程》书籍最后的试题部分
char* my_strcpy(char* dest, const char* src)
{char* ret = dest;assert(dest != NULL);assert(src != NULL);while ((*dest++ = *src++)){;}return ret;
}


五、strcat 的使用和模拟实现
六、strcmp 的使用和模拟实现
七、strncpy 函数的使用
八、strncat 函数的使用
九、strncmp 函数的使用
十、strstr 的使用和模拟实现
十 一、strtok 函数的使用
十二、strerror 函数的使用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/181659.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024北京健康展,第11届中国国际大健康产业博览会4月举办

China-DJK北京健博会/打造2024年度全国首场大健康产业发展盛会&#xff1b; 2024第11届中国&#xff08;北京&#xff09;国际大健康产业博览会&#xff08;China-DJK北京健博会&#xff09; The 11th China (Beijing) International Health Industry Expo in 2024 时间&…

XMind思维导图:掌握思维之翼,激发无限创造力

在当今快速发展的信息时代&#xff0c;高效地表达和梳理思维显得尤为重要。在这个背景下&#xff0c;XMind作为一款思维导图软件&#xff0c;以其独特的优势脱颖而出。它不仅在Mac和Windows平台上均可使用&#xff0c;还以其人性化的设计和强大的功能&#xff0c;成为了思维导图…

2023亚马逊云科技re:Invent,在开发者板块探究如何利用技术重塑业务

美国当地时间11月27日&#xff0c;一年一度的亚马逊云科技re:Invent大会在美国拉斯维加斯盛大开幕。这场全球云计算领域的前沿盛会&#xff0c;已连续12年成为引领行业的风向标。那么本次2023亚马逊云科技re:Invent大会又有哪些可玩、可看的新项目&#xff0c;下面就一起来瞧一…

【AIGC】关于Prompt你必须知道的特性

代码和数据:https://github.com/tonyzhaozh/few-shot-learning 一、实践验证的大模型的特性 1. 大模型的偏差 示例&#xff1a;&#xff08;文本的情感分析&#xff1a;一句话->P(积极&#xff09;或者N&#xff08;消极) Input: I hate this movie. Sentiment: Negativ…

查看mysql 或SQL server 的连接数,mysql超时、最大连接数配置

1、mysql 的连接数 1.1、最大可连接数 show variables like max_connections; 1.2、运行中连接数 show status like Threads_connected; 1.3、配置最大连接数&#xff0c; mysql版本不同可配置的最大连接数不同&#xff0c;mysql8.0的版本默认151个连接数&#xff0c;…

java ssh 二手车交易管理系统eclipse开发mysql数据库MVC模式java编程网页设计

一、源码特点 JSP ssh 二手车交易管理系统是一套完善的web设计系统&#xff08;系统采用ssh框架进行设计开发&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用 B/S模式开发。开发环境为TOMCAT…

“2024年国考公共科目”趣谈

黄金的熔点仅为1064.43C&#xff0c;不锈钢、耐高温钢所需的冶炼温度也仅需2000℃以上&#xff0c;因此与正在进行中的“2024年国考公共科目笔试”的“报名人数首破300万&#xff0c;平均约77人竞争一岗位”相比&#xff0c;炼金炼钢温度全都败落下风。 网络图片 其中宁夏的一…

hugegraph-server安装部署(docker)

1、安装docker不说了&#xff0c;可以直接看我文章一键安装docker https://blog.csdn.net/qq_41060647/article/details/131568289?spm1001.2014.3001.5502 2、一个docker-compose文件解决。 如果不使用mysql&#xff0c;可以将docker-compose.yml文件中的mysql配置修改为其他…

CDC with Async FIFO

https://zipcpu.com/blog/2018/07/06/afifo.html

浏览器插api开发文档

chrome谷歌浏览器开发文档

数据结构与算法之美学习笔记:28 | 堆和堆排序:为什么说堆排序没有快速排序快?

目录 前言如何理解“堆”&#xff1f;如何实现一个堆&#xff1f;1. 往堆中插入一个元素2. 删除堆顶元素 如何基于堆实现排序&#xff1f;1. 建堆2. 排序 解答开篇内容小结 前言 本节课程思维导图&#xff1a; 我们今天讲另外一种特殊的树&#xff0c;“堆”&#xff08;Heap&…

figma 基础使用——准备阶段

1. 注册账号 2. figma有客户端也有网页端&#xff0c;使用注意同步字体 之后点击下载window installeer 字体 3. 安装 Figma汉化包 通过figma.cool 网站&#xff0c;下载离线的汉化包 之后通过谷歌的扩展程序添加

从零构建属于自己的GPT系列2:预训练中文模型加载、中文语言模型训练、逐行代码解读

&#x1f6a9;&#x1f6a9;&#x1f6a9;Hugging Face 实战系列 总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在PyCharm中进行 本篇文章配套的代码资源已经上传 从零构建属于自己的GPT系列1&#xff1a;文本数据预处理 从零构建属于自己的GPT系列2&#xff1a;语…

45.113.200.1搜索引擎蜘蛛抓取不到网站内容页面可能的原因

以下是搜索引擎蜘蛛抓取不到网站内容页面的一些主要原因总结&#xff1a; 网站的 robots.txt 文件中禁止了搜索引擎蜘蛛访问网站某些页面或目录&#xff0c;导致搜索引擎无法抓取到相关页面的内容。 网站的页面存在重定向或者跳转&#xff0c;搜索引擎蜘蛛无法直接抓取到需要的…

一些前辈优秀项目和学习笔记

***框架&#xff08;XXL-JOB是一个分布式任务调度平台&#xff0c;其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线&#xff0c;开箱即用&#xff09;https://gitee.com/xuxueli0323/xxl-job.git ***XXL-JOB分布式任务调度平台功…

接口的跨域问题(CORS)

CORS(主流的解决方案&#xff0c;推荐使用) 1.什么是CORS CORS (Cross-Origin Resource Sharing&#xff0c;跨域资源共享)由一系列 HTTP 响应头组成&#xff0c;这些 HTTP 响应头决定浏览器是否阻止前端 JS 代码跨域获取资源 浏览器的同源安全策略默认会阻止网页“跨域…

python开发之个微自动转发朋友圈

简要描述&#xff1a; 转发朋友圈&#xff0c;直接xml数据。(对谁不可见) 请求URL&#xff1a; http://域名地址/forwardSns 请求方式&#xff1a; POST 请求头Headers&#xff1a; Content-Type&#xff1a;application/jsonAuthorization&#xff1a;login接口返回 参…

Jmeter-beanshell里把整型数值赋值给变量

int cyclesNum 10;vars.put("cyclesNum",Integer.toString(result));

uView ui 1x uniapp 表格table行内容长度不一导致高度不统一而出现的不对齐问题

问题 因为td单元格内空长度不定导致行单元格未对齐 解决&#xff1a; 重置td的高度&#xff1a;height:100% 改为height:auto !import <u-table><u-tr v-for"(item,index) in Lineinfo.Cust_Name" ><u-td style"height: auto !important;back…

csgo/steam游戏搬砖项目的五大认知误区

CSGO/steam游戏搬砖项目的5大认知误区 1、卡价越高越难选品&#xff1f;越没利润&#xff1f; 2、明明buff卖价《 steam求购价&#xff0c;为什么还能赚钱&#xff1f; 3、实名资料少就没法批量操作账号&#xff1f; 4、本金少就没法玩&#xff1f; 5、这个项目的风险是不是很大…