字符函数 和 字符串函数

news2025/1/24 11:42:24

今天我打算介绍一些字符函数和字符串函数,有一些字符串函数我实现了模拟,但文章中没有放出来,如果需要的欢迎来到我的gitee里面拿取(在test.c11-23里面)

这是我的gitee:小汐 (lhysxx) - Gitee.com


字符函数

1. islower

判断是否是小写字母

跳转网站

islower - C++ Reference

注意事项:

  1. int islower(int c)

函数返回类型:int

这里返回的是 0 和 非0 的数(0代表输入的不是小写字母,非0代表输入的是小写字母)

函数参数类型:int

     2. 参数c

可以输入的是字符(字符的本质也是数字)

要检查的字符会被强制转换为 int 或 EOF

   3.头文件:

    <ctype.h>


代码举例

#include<stdio.h>
#include<ctype.h>
int main()
{
	printf("%d\n", islower('A'));
	printf("%d\n", islower('a'));
	return 0;
}

打印结果:


2. isupper

判断是否是大写字母

跳转网站

isupper - C++ Reference

注意事项:

  1. int islower(int c)

函数返回类型:int

这里返回的是 0 和 非0 的数(0代表输入的不 是大写字母,非0代表输入的是大写字母)

函数参数类型:int

     2. 参数c

可以输入的是字符(字符的本质也是数字)

要检查的字符会被强制转换为 int 或 EOF

   3.头文件:

    <ctype.h>


代码举例

#include<stdio.h>
#include<ctype.h>
int main()
{
	printf("%d\n", isupper('A'));
	printf("%d\n", isupper('a'));
	return 0;
}

运行结果:


3. isprint

判断是否是可打印字符(ASCLL码值在0~31之间是不可见的)

跳转网站

isprint - C++ Reference

注意事项:

  1. int isprint(int c)

函数返回类型:int

这里返回的是 0 和 非0 的数(0代表输入的不 是可见字符,非0代表输入的是可见字符)

函数参数类型:int

    2. 参数c

可以输入的是字符(字符的本质也是数字)

要检查的字符会被强制转换为 int 或 EOF

  3. 头文件:

    <ctype.h>


代码举例

#include<stdio.h>
#include<ctype.h>
int main()
{
	printf("%d\n", isprint('\0'));
	printf("%d\n", isprint('a'));
	return 0;
}

运行结果:


4. isdigit

判断是否是’0‘ — ’9‘的字符

跳转网站

isdigit - C++ Reference

注意事项:

  1. int isdigit(int c)

函数返回类型:int

这里返回的是 0 和 非0 的数(0代表输入的不 是数字字符,非0代表输入的是数字字符)

函数参数类型:int

    2.参数c

可以输入的是字符(字符的本质也是数字)

要检查的字符会被强制转换为 int 或 EOF

   3.头文件:

   <ctype.h>


代码举例

#include<stdio.h>
#include<ctype.h>
int main()
{
	printf("%d\n", isdigit('0'));
	printf("%d\n", isdigit('a'));
	return 0;
}

运行结果:


5. isspace

判断输入的是否是空白字符(包括'   ',' \f'‘ \v ' \n ' , ' \r ', ' \t ')

跳转网站

isspace - C++ Reference

注意事项:

  1. int isspace(int c)

函数返回类型:int

这里返回的是 0 和 非0 的数(0代表输入的不 是空白字符,非0代表输入的是空白字符)

函数参数类型:int

     2.参数c

可以输入的是字符(字符的本质也是数字)

要检查的字符会被强制转换为 int 或 EOF

    3.头文件:

   <ctype.h>


代码举例

#include<stdio.h>
#include<ctype.h>
int main()
{
	printf("%d\n", isspace(' '));
	printf("%d\n", isspace('a'));
	return 0;
}

运行结果:


6. toupper

把小写字母变成大写字母

跳转网站

toupper - C++ Reference

注意事项:

  1. int toupper(int c)

函数的返回类型: int ,函数的参数类型: int

返回的是大写字母的ASCLL码值

    2. 参数c
可以输入的是字符(字符的本质也是数字)

   3.头文件:

    <ctype.h>

代码举例

#include<stdio.h>
#include<ctype.h>
int main()
{
	printf("%d\n", toupper('a'));
	printf("%c\n", toupper('a'));
	return 0;
}

运行结果:


7. tolower

把大写字母变成小写字母

跳转网站

tolower - C++ Reference

注意事项:

  1. int toupper(int c)

函数的返回类型: int ,函数的参数类型: int

返回的是小写字母的ASCLL码值

     2. 参数c
可以输入的是字符(字符的本质也是数字)

    3. 头文件:

    <ctype.h>

代码举例

#include<stdio.h>
#include<ctype.h>
int main()
{
	printf("%d\n", tolower('A'));
	printf("%c\n", tolower('A'));
	return 0;
}

运行结果:


字符串函数

1. strlen

计算字符串的长度

跳转网站

strlen - C++ Reference

注意事项:

  1. size_t strlen ( const char * str )

函数返回类型:size_t (字符串的长度不可能为负数)

返回的值就是字符串的长度

函数参数类型: const char *

这里说明地址所指向的内容是不可以更改的

   2. 参数str:

传过来的是需要计算的字符串的首地址

  3. 头文件:

   <string.h>


代码举例

#include<stdio.h>
#include<string.h>
int main()
{
	char ch[30] = "ancd";
	printf("%d ", strlen(ch));
	return 0;
}

运行结果:

数组ch存放的元素的一定要包括'\0' ,否则可能造成越界访问

    4. 实现原理:

拿到某一个地址后,向后找 '\0' ,直到找到为止才会停下来,记录 '\0' 之前的元素个数有多少个

2. strcpy

复制字符串的内容

跳转网站

strcpy - C++ Reference

注意事项:

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

函数返回类型 : char * ,参数类型:都是 char *

返回的地址是destination的地址

    2. 参数destination 和 参数source

把source接收的地址所指向的内容复制到destination接收的地址所指向的内容

并且source接收的地址所指向的内容不可以被修改

   3. 头文件

   <string.h>


代码举例

#include<stdio.h>
#include<string.h>
int main()
{
	char ch1[] = "abcdeff";
	char ch2[] = "ab";
	strcpy(ch1,ch2);
	printf("%s", ch1);
	return 0;
}

  4. 实现原理

将一个字符数组的内容拷贝到另一个字符数组的内容里面(包括'\0'),但是需要修改内容的字符数组的内存大小一定不能小于被拷贝字符数组的内存大小

3. strcmp

比较两个字符串的大小(比较的是对应的ASCLL码值)

跳转网站

strcmp - C++ Reference

注意事项:

  1. int strcmp ( const char * str1, const char * str2 )

函数返回类型:int , 函数参数类型:都是 const char *

函数返回的是(大于0,0,小于0的数)

[如果str1所指向的字符串大小大于str2接收的,返回大于0的数;如果str1所指向的字符串大小等于str2接收的,返回0,如果str1所指向的字符串大小小于str2接收的,返回小于0的数]

    2. 参数str1 和 str2

传入的是两个需要比较的字符串的地址

   3. 头文件:

<string.h>


代码举例

#include<stdio.h>
#include<string.h>
int main()
{
	char ch1[] = "abcde";
	char ch2[] = "abcdf";
	printf("%d ", strcmp(ch1, ch2));
	return 0;
}

运行结果:

"abcd"这几个都是一样的,但是'e' 的ASCLL码值小于'f',则返回比0小的数


4. strcat

将一个字符串的内容衔接给到一个字符串内容的后面

跳转网站

strcat - C++ Reference

注意事项:

  1. char * strcat ( char * destination, const char * source )

函数返回类型:char * , 函数参数:都是 char *

返回的是被衔接的字符串的地址

    2. 参数 destination 和 source

把 source 所指向的字符串的内容(包括'\0')衔接到 destination所指向的字符串的内容后面

并且 source 所指向的字符串的内容不可以被修改

   3. 头文件

    <string.h>

代码举例

#include<stdio.h>
#include<string.h>
int main()
{
	char ch1[20] = "hello ";
	char ch2[] = "bit";
	strcat(ch1, ch2);
  printf("%s\n", strcat(ch1, ch2));
	printf("%s\n", ch1);
	return 0;
}

运行结果:


4. 实现原理

找到需要被衔接的字符串的'\0'位置的地址处,并从这里开始,后面的内容全部改成需要被复制的字符串的内容(包括'\0'),并且被衔接的字符数组空间一定要大

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

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

相关文章

编程怎么学才能快速入门,分享一款中文编程工具快速学习编程思路,中文编程工具之边条主控菜单构件简介

编程怎么学才能快速入门&#xff0c;分享一款中文编程工具快速学习编程思路&#xff0c;中文编程工具之边条主控菜单构件简介 一、前言 零基础自学编程&#xff0c;中文编程工具下载&#xff0c;中文编程工具构件之扩展系统菜单构件教程编程系统化教程链接https://jywxz.blog…

Python标准库:math库【侯小啾python领航班系列(十六)】

Python标准库:math库【侯小啾python领航班系列(十六)】 大家好,我是博主侯小啾, 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ…

LLM推理部署(四):一个用于训练、部署和评估基于大型语言模型的聊天机器人的开放平台FastChat

FastChat是用于对话机器人模型训练、部署、评估的开放平台。体验地址为&#xff1a;https://chat.lmsys.org/&#xff0c;该体验平台主要是为了收集人类的真实反馈&#xff0c;目前已经支持30多种大模型&#xff0c;已经收到500万的请求&#xff0c;收集了10万调人类对比大模型…

Java项目调用C/C++ SDK的方案汇总

Java项目调用C/C SDK的方案汇总 背景调研JNIJNativeJNAJavaCPP 背景 Java项目中需要调用到一个C项目&#xff0c;于是对目前通用的解决方案做了一些调研&#xff0c;这里做一个汇总。 调研 JNI JNI&#xff1a;Java Native Interface&#xff0c;JNI是一套编程接口&#xf…

盘点25个Html游戏Game源码网页爱好者不容错过

盘点25个Html游戏Game源码网页爱好者不容错过 学习知识费力气&#xff0c;收集整理更不易。 知识付费甚欢喜&#xff0c;为咱码农谋福利。 下载链接&#xff1a;https://pan.baidu.com/s/1lSNLjWB4xMuLV8m_kDtczw?pwd6666 提取码&#xff1a;6666 项目名称 21点游戏 H5…

影刀实例五,网页表单中多下拉框填写问题

一&#xff0c;背景 网页表单中&#xff0c;经常有这样一个场景&#xff0c;填写籍贯.并且是以三个下拉框表示&#xff0c;分别代表省&#xff0c;市&#xff0c;县.并且都是非标准的&#xff0c;不能直接使用影刀内置命令.常规思路是&#xff1a;分别处理省&#xff0c;市&…

P2 Linux系统目录结构

前言 &#x1f3ac; 个人主页&#xff1a;ChenPi &#x1f43b;推荐专栏1: 《C_ChenPi的博客-CSDN博客》✨✨✨ &#x1f525; 推荐专栏2: 《Linux C应用编程&#xff08;概念类&#xff09;_ChenPi的博客-CSDN博客》✨✨✨ &#x1f6f8;推荐专…

面试题:说说 Cookie、Session、Token、JWT?

文章目录 什么是认证&#xff08;Authentication&#xff09;什么是授权&#xff08;Authorization&#xff09;什么是凭证&#xff08;Credentials&#xff09;什么是 Cookiecookie 重要的属性 什么是 Sessionsession 认证流程 Cookie 和 Session 的区别什么是 Token&#xff…

matlab操作方法(一)——向量及其操作

1.向量及其操作 matlab是英文Matrix Laboratory&#xff08;矩阵实验室&#xff09;的简称&#xff0c;是基于矩阵运算的操作环境。matlab中的所有数据都是以矩阵或多维数组的形式存储的。向量和标量是矩阵的两种特殊形式 向量是指单行或者单列的矩阵&#xff0c;它是构成矩阵…

23种设计模式之C++实践(二)

23种设计模式之C++实践 3. 设计模式(二)组合型模式7. 适配器模式——不兼容结构的协调7.2:类适配器模式7.3:双向适配器模式适配器模式总结8.桥接模式——处理多维度变化桥接模式总结9. 组合模式——树形结构的处理9.2 透明组合模式9.3 安全组合模式组合模式总结10. 装饰模式…

【数据库】数据库基于封锁机制的调度器,使冲突可串行化,保障事务和调度一致性

封锁使可串行化 ​专栏内容&#xff1a; 手写数据库toadb 本专栏主要介绍如何从零开发&#xff0c;开发的步骤&#xff0c;以及开发过程中的涉及的原理&#xff0c;遇到的问题等&#xff0c;让大家能跟上并且可以一起开发&#xff0c;让每个需要的人成为参与者。 本专栏会定期更…

MySQL 教程 1.5

MySQL 创建数据表 创建 MySQL 数据表需要以下信息&#xff1a; 表名表字段名定义每个表字段的数据类型 语法 以下为创建 MySQL 数据表的 SQL 通用语法&#xff1a; CREATE TABLE table_name (column1 datatype,column2 datatype,... ); table_name 是你要创建的表的名称。…

鸿蒙基础入门与高频知识点梳理

介绍鸿蒙高频知识点&#xff0c;持续更新中 一、鸿蒙代码结构 ├──entry/src/main/ets // 代码区 │ ├──common │ │ └──Constant.ets // 常量类 │ ├──entryability │ │ └──EntryAbility.ts // 程序入口类 │ ├──p…

学习-java多线程面试题

为什么不建议用Executors启动线程池 *队列LinkedBlockingQueue是没有边界的队列,请求多会造成OOM *建议使用ThreadPoolExecutors 线程池中提交一个任务的流程&#xff1f; 1先判断线程池是否有线程&#xff0c;如果与就直接执行&#xff0c;没有就放队列 2如果队列满了&#…

【ArcGIS Pro微课1000例】0041:Pro强大的定位搜索功能、定位窗格、地图上查找地点

一谈到搜索,你是不是还停留在矢量数据的属性表中呢?今天给大家介绍ArcGIS Pro中定位搜索强大功能的使用,可以基于在线地图、矢量数据等多种数据源,进行地址、地名、道路、坐标等的查找。 文章目录 一、定位工具介绍二、在线地图搜索三、本地矢量数据搜索四、无地图搜索五、…

Makefile初学之谜之隐式规则

刚开始学习Make教程&#xff1a;https://makefiletutorial.vercel.app/#/docs/fancy-rules&#xff0c;里面有个sample: objects foo.o bar.o all.o all: $(objects)# These files compile via implicit rules foo.o: foo.c bar.o: bar.c all.o: all.call.c:echo "int…

分布式事务有哪些解决方案?

本文我们来讨论下分布式事务的相关知识点。 分布式事务是分布式系统中非常重要的一部分&#xff0c;最典型的例子是银行转账和扣款&#xff0c;A 和 B 的账户信息在不同的服务器上&#xff0c;A 给 B 转账 100 元&#xff0c;要完成这个操作&#xff0c;需要两个步骤&#xff0…

java蚁群算法的物流管理系统eclipse定制开发mysql数据库BS模式java编程百度地图

一、源码特点 java 基于蚁群算法的物流管理系统是一套完善的web设计系统 &#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,eclipse开发&#xff0c;数据库为Mysql5.0&a…

Debian下载安装教程

目录 一.前言二.下载三.安装 一.前言 这篇文章展示如何使用VMware Workstation Player安装Debian12虚拟机。 二.下载 官网地址&#xff1a;官网 进入官网之后可以直接点击下载Debian选项&#xff0c;这样下载的是最新版的网络安装镜像。 三.安装 使用VMware Workstation P…

听GPT 讲Rust源代码--src/tools(5)

File: rust/src/tools/rust-analyzer/crates/hir-ty/src/mir/lower.rs 在Rust源代码中&#xff0c;lower.rs文件位于Rust Analyzer项目的hir-ty子库中&#xff0c;其目的是将高级中间表示&#xff08;HIR&#xff09;降低为中间表示&#xff08;MIR&#xff09;。下面对文件及其…