字符函数内存函数———C语言
字符分类函数
头文件:
ctype.h
函数 | 功能 |
iscntrl | 判断字符是否为控制字符 |
isspace | 判断字符是否为空白字符(空格,换页、换行、回车、制表符或垂直制表符) |
isdigit | 判断字符是否为十进制数字 |
isxdigit | 判断字符是否为十六进制数字(0-9)(a-f)(A-F) |
isupper | 判断字符是否为大写英文字母 |
islower | 判断字符是否为小写英文字母 |
isalpha | 判断字符是否为英文字母 |
isalnum | 判断字符是否为字母或数字 |
ispunct | 判断字符是否为标点符号 |
字符转换函数:
函数 | 功能 |
tolower | 把大写字母转换为小写字母 |
toupper | 把小写字母转换为大写字母 |
#include <stdio.h>
#include <ctype.h>
int main() {char ch1, ch2;printf("小写转大写:\n");printf("input a character:");scanf("%c", &ch1);ch2 = toupper(ch1);printf("transform %c to %c.\n", ch1, ch2);printf("大写转小写:\n");char str[1024] = "Hello World!";char* p_str = str;char res[1024] = { 0 };char* p_res = res;while (*p_str) {if (isupper(*p_str)) {*p_res = tolower(*p_str);}else {*p_res = *p_str;}p_str++;p_res++;} printf("%s transform:%s\n", str, res);return 0;
}
内存函数:
1.memcpy
原型:void * memcpy ( void * destination, const void * source, size_t num );
原理:从source开始位置向后复制num个字节的数据到destination的内存位置
#include <stdio.h>
#include <string.h>
typedef struct Stu{char name[1024];int age;}S;
int main() {int nums[] = { 1,2,3,4 };int numsBak[10] = { 0 };memcpy(numsBak, nums, sizeof(nums));int length = sizeof(nums) / sizeof(nums[0]);for (int i = 0; i < length; i++) {printf("%d\n", numsBak[i]);} // 结构体的拷贝S students[] = { {"xiaoming",10},{"xiaozhao",30} };S studentsBak[3] = { 0 };memcpy(studentsBak, students, sizeof(students));for (int i = 0; i < 3; i++) {S student = studentsBak[i];printf("uname:%s,age:%d\n", student.name, student.age);}return 0;
}
注意:该函数不检测源中的任何终止字符,它总是精确地复制num个字符
eg:
#include <stdio.h>
#include <string.h>
int main() {char src[] = "He was an unusually\0 complex man";//这里的/0不被在意char dist[1024] = { 0 }; memcpy(dist, src, 200);printf("src:%s\ndist:%s\n", src, dist);printf("dist[21]=%c\n",dist[21]);return 0;
}
2.memmove
原型:void * memmove ( void * destination, const void * source, size_t num );
原理:将num个字节的值从源指向的位置复制到目标指向的内存块。复制就像使用了中间缓存,从而允许目标和源重叠, 该函数不检测源中的任何终止字符,它总是精确地复制num个字符。
section one :
destination的起始地址在src起始地址之后
section two :
destination的结束地址在src结束地址之前
#include <stdio.h>
#include <string.h>
int main() {char str[] = "abcdef";// 重叠的区域复制:从 str + 1 开始的部分复制到 str 开头memmove(str, str+1, 5);printf("Result: %s\n", str); // 输出: "bcdef"return 0;
}
3.memcmp
原型:int memcmp ( const void * ptr1, const void * ptr2, size_t num );
原理:
- 将ptr1所指向的内存块的前num字节与ptr2所指向的前num字节进行比较,如果它们都匹配则返回0
- 在两个内存块中不匹配的第一个字节在ptr1中的值小于ptr2中的值,则返回<0的数(比较的是字母转换后的ASCII值)
- 在两个内存块中不匹配的第一个字节在ptr1中的值大于ptr2中的值,则返回>0的数
#include <stdio.h>
#include <string.h>
int main(){char buffer1[] = "DWGaOtP12df0";char buffer2[] = "DWgAOTP12DF0";int n = memcmp(buffer1, buffer2, sizeof(buffer1));if (n > 0) {printf("'%s' is greater than '%s'.\n", buffer1, buffer2);} else if (n < 0) {printf("'%s' is less than '%s'.\n", buffer1, buffer2);} else { printf("'%s' is the same as '%s'.\n", buffer1, buffer2);}return 0;
}
4.memset
原型:void * memset ( void * ptr, int value, size_t num );
原理:将ptr指向的内存块的前num个字节设置为指定的值(解释为unsigned char)
#include <stdio.h>
#include <string.h>
int main() {char name[] = "almost every programmer should know memset!";// 将name指向的内存块的前6个字节设置为-memset(name, '-', 6);printf("%s\n", name);return 0;
}
- 这是本人的学习笔记不是获利的工具,小作者会一直写下去,希望大家能多多监督我
- 文章会每攒够两篇进行更新发布(受平台原因,也是希望能让更多的人看见)
- 感谢各位的阅读希望我的文章会对诸君有所帮助
相关文章:

字符函数内存函数———C语言
字符分类函数 头文件: ctype.h 函数功能iscntrl判断字符是否为控制字符isspace判断字符是否为空白字符(空格,换页、换行、回车、制表符或垂直制表符)isdigit判断字符是否为十进制数字isxdigit判断字符是否为十六进制数字(0-9)(a…...
c语言跨文件传输数据
在 C 语言中,可以通过以下几种方式获取其他 C 文件中定义的变量: 一、使用 extern 关键字 在需要获取变量的文件中,使用extern关键字声明该变量。 例如,如果在other.c文件中有一个全局变量int globalVar;,在当前文件中…...

企业文件防泄密怎么做?10款透明加密软件排行榜
在信息时代,企业的核心竞争力往往体现在其拥有的知识和信息上,而企业文件的安全性直接关系到这些信息的保护。文件防泄密已成为企业管理中的重要议题,透明加密技术因其无缝集成和高效保护的特性,成为企业防泄密的首选方案。2024年…...

AI编程工具的力量:以AWS Toolkit与百度Comate为例,加速程序员开发效率
在当今的数字化转型浪潮中,人工智能(AI)技术不仅重塑了众多行业,也为软件开发领域带来了革命性的变化。AI编程工具,凭借其智能化的特性,正在成为程序员提高开发效率、优化代码质量和加速产品迭代的重要助力…...

smallpdf: 免费高效的PDF水印添加工具
引言 在数字文档管理和分享的过程中,保护版权和确保文档的原创性变得尤为重要。PDF文件作为一种广泛使用的格式,经常需要添加水印来表明所有权或提醒查看者注意文档的敏感性。本文将介绍一款名为smallpdf的免费工具,它能够轻松地为PDF文件添…...
java整合modbusRTU与modbusTCP
理解 Modbus TCP 报文格式,Modbus TCP 报文格式如下: | Transaction ID (2 bytes) | Protocol ID (2 bytes) | Length (2 bytes) | Unit ID (1 byte) | Function Code (1 byte) | Data (N bytes) |Transaction ID:标识事务的唯一标识符,确保正确的 Transaction ID:每个请求…...

四、Docker使用
1. 快速入门 1.1. Docker背景介绍 Docker是一个开源的平台,用于开发、交付和运行应用程序。它能够在Windows,macOS,Linux计算机上运行,并将某一应用程序及其依赖项打包至一个容器中,这些容器可以在任何支持Docker的环…...

杰发科技AC7840——CAN通信简介(8)_通过波特率和时钟计算SEG_1/SEG_2/SJW/PRESC
通过公式计算 * 波特率和采样点计算公式:* tSeg1 (S_SEG_1 2); tSeg2 (S_SEG_2 1).* BandRate (SCR_CLK / (S_PRESC 1) / ((S_SEG_1 2) (S_SEG_2 1))), SCR_CLK 为CAN 模块源时钟* SamplePoint (tSeg1 / (tSeg1 tSeg2)). {0x0D, 0x04, 0x04, 0x3B},…...
开发日记-EaxyExcel修改模板sheet名称
引入pom: <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel-core</artifactId><version>3.1.1</version><scope>compile</scope></dependency> 编写自定义拦截器: impo…...

微软AI人工智能认证有哪些?
微软提供的人工智能认证主要包括以下几个方面: Azure AI Fundamentals(AI900认证):这是一个基础认证,旨在展示与Microsoft Azure软件和服务开发相关的基本AI概念,以创建AI解决方案。它面向具有技术和非技术…...
基于缓存提高Java模板文件处理性能:减少磁盘I/O的实践与探索
1、优化背景及动机 背景 线上有一个需求:读取模板文件,并根据不同的业务将数据写入模板文件,生成一个新的文件。模板文件本身是不会变的,所以每次生成文件都要去读取一遍模板文件,会有很多的磁盘IO操作,并…...
C/C++ 线程局部存储(TLS)
在C或C中,线程局部存储(Thread-Local Storage,简称TLS)是一种用于存储线程特有数据的方法。这意味着每个线程都可以访问它自己的变量实例,而不会影响到其他线程中的同名变量。这在多线程程序中非常有用,因为…...

碰撞检测 | 基于ROS Rviz插件的多边形碰撞检测仿真平台
目录 0 专栏介绍1 基于多边形的碰撞检测2 碰撞检测仿真平台搭建2.1 多边形实例2.2 外部服务接口2.3 Rviz插件化 3 案例演示3.1 功能介绍3.2 绘制多边形 0 专栏介绍 🔥课设、毕设、创新竞赛必备!🔥本专栏涉及更高阶的运动规划算法轨迹优化实战…...

nginx实验
源码编译 解压 进入目录查看文件 环境监测文件 下载c语言编译工具 指定功能 成功 拷贝 关闭 删除 关闭debug 启动 nginx的平滑升级以及版本回滚 解压 备份 查看进程 回滚 nginx命令的常用参数 查看参数 检测配置文件中的语法 测试并打印 静默模式 设置全局指令(不能…...

新技术能够区分真实照片和 AI 伪造图片,但为何平台没有使用?|TodayAI
随着生成式 AI 图像工具的快速发展,网络上越来越多的图像真假难辨。尽管已有技术能够区分真实照片和 AI 伪造图片,但大多数在线平台尚未充分利用这一技术。随着美国总统大选临近,网络上充斥着关于候选人唐纳德特朗普和卡玛拉哈里斯的各种照片…...

测量 Redis 服务器的固有延迟
redis-cli --intrinsic-latency redis-cli --intrinsic-latency 命令用于测量 Redis 服务器的固有延迟。 固有延迟指的是 Redis 服务器处理一个命令所需的最短时间,不包括网络延迟。通过这个测量,我们可以了解 Redis 服务器本身的性能,而不…...

【JVM】JVM内存模型与操作系统内存模型(一)
JVM内存模型与操作系统内存模型 Java进程在操作系统内存中的结构 JVM内存模型 可以这样理解:JVM内存模型其实就是JVM在启动的时候从操作系统内存中要了一块大内存,然后将这个大内存分成五个区域:方法区、堆区、虚拟机栈、本地方法栈、本地方法栈、程序计数器.其实叫…...

构建基于LLM的应用程序——为您的应用程序选择合适的LLM
。 在本章中,将引导您完成为应用程序选择合适LLM的过程。我们将涵盖以下几个主题: 市场上最具前景的LLM概览比较LLM时应使用的主要标准和工具规模与性能之间的权衡 在本章结束时,您应该能够清楚地理解如何为您的应用程序选择合适的LLM&…...

raksmart站群服务器多IP配置要求
RakSmart是一家提供多种服务器解决方案的服务商,其中包括针对站群服务的多IP服务器。这类服务器特别适合那些需要大量独立IP地址的业务,例如站群、多域名托管等。下面我们就来了解一下RakSmart站群服务器的多IP配置要求及相关信息。 什么是站群服务器? …...

【Web IDE】WebContainer容器在浏览器中启动运行nodejs并使用vite启动项目
参考了文章WebContainer/api 基础(Web IDE 技术探索 一) 在浏览器中运行vite的vue3项目 示例站点 最终效果 主要流程 加载WebContainer》加载代码压缩包>解压代码压缩包》生成文件树》挂载文件树》pnpm安装依赖》启动项目 代码 <script setup…...

多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

stm32G473的flash模式是单bank还是双bank?
今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

css实现圆环展示百分比,根据值动态展示所占比例
代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

K8S认证|CKS题库+答案| 11. AppArmor
目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作: 1)、切换集群 2)、切换节点 3)、切换到 apparmor 的目录 4)、执行 apparmor 策略模块 5)、修改 pod 文件 6)、…...

大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...

相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...
Python如何给视频添加音频和字幕
在Python中,给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加,包括必要的代码示例和详细解释。 环境准备 在开始之前,需要安装以下Python库:…...