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

字符函数内存函数———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语言

字符分类函数 头文件&#xff1a; ctype.h 函数功能iscntrl判断字符是否为控制字符isspace判断字符是否为空白字符&#xff08;空格&#xff0c;换页、换行、回车、制表符或垂直制表符&#xff09;isdigit判断字符是否为十进制数字isxdigit判断字符是否为十六进制数字(0-9)(a…...

c语言跨文件传输数据

在 C 语言中&#xff0c;可以通过以下几种方式获取其他 C 文件中定义的变量&#xff1a; 一、使用 extern 关键字 在需要获取变量的文件中&#xff0c;使用extern关键字声明该变量。 例如&#xff0c;如果在other.c文件中有一个全局变量int globalVar;&#xff0c;在当前文件中…...

企业文件防泄密怎么做?10款透明加密软件排行榜

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

AI编程工具的力量:以AWS Toolkit与百度Comate为例,加速程序员开发效率

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

smallpdf: 免费高效的PDF水印添加工具

引言 在数字文档管理和分享的过程中&#xff0c;保护版权和确保文档的原创性变得尤为重要。PDF文件作为一种广泛使用的格式&#xff0c;经常需要添加水印来表明所有权或提醒查看者注意文档的敏感性。本文将介绍一款名为smallpdf的免费工具&#xff0c;它能够轻松地为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是一个开源的平台&#xff0c;用于开发、交付和运行应用程序。它能够在Windows&#xff0c;macOS&#xff0c;Linux计算机上运行&#xff0c;并将某一应用程序及其依赖项打包至一个容器中&#xff0c;这些容器可以在任何支持Docker的环…...

杰发科技AC7840——CAN通信简介(8)_通过波特率和时钟计算SEG_1/SEG_2/SJW/PRESC

通过公式计算 * 波特率和采样点计算公式&#xff1a;* 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&#xff1a; <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel-core</artifactId><version>3.1.1</version><scope>compile</scope></dependency> 编写自定义拦截器&#xff1a; impo…...

微软AI人工智能认证有哪些?

微软提供的人工智能认证主要包括以下几个方面&#xff1a; Azure AI Fundamentals&#xff08;AI900认证&#xff09;&#xff1a;这是一个基础认证&#xff0c;旨在展示与Microsoft Azure软件和服务开发相关的基本AI概念&#xff0c;以创建AI解决方案。它面向具有技术和非技术…...

基于缓存提高Java模板文件处理性能:减少磁盘I/O的实践与探索

1、优化背景及动机 背景 线上有一个需求&#xff1a;读取模板文件&#xff0c;并根据不同的业务将数据写入模板文件&#xff0c;生成一个新的文件。模板文件本身是不会变的&#xff0c;所以每次生成文件都要去读取一遍模板文件&#xff0c;会有很多的磁盘IO操作&#xff0c;并…...

C/C++ 线程局部存储(TLS)

在C或C中&#xff0c;线程局部存储&#xff08;Thread-Local Storage&#xff0c;简称TLS&#xff09;是一种用于存储线程特有数据的方法。这意味着每个线程都可以访问它自己的变量实例&#xff0c;而不会影响到其他线程中的同名变量。这在多线程程序中非常有用&#xff0c;因为…...

碰撞检测 | 基于ROS Rviz插件的多边形碰撞检测仿真平台

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

nginx实验

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

新技术能够区分真实照片和 AI 伪造图片,但为何平台没有使用?|TodayAI

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

测量 Redis 服务器的固有延迟

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

【JVM】JVM内存模型与操作系统内存模型(一)

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

构建基于LLM的应用程序——为您的应用程序选择合适的LLM

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

raksmart站群服务器多IP配置要求

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

【Web IDE】WebContainer容器在浏览器中启动运行nodejs并使用vite启动项目

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

React Native 导航系统实战(React Navigation)

导航系统实战&#xff08;React Navigation&#xff09; React Navigation 是 React Native 应用中最常用的导航库之一&#xff0c;它提供了多种导航模式&#xff0c;如堆栈导航&#xff08;Stack Navigator&#xff09;、标签导航&#xff08;Tab Navigator&#xff09;和抽屉…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

大学生职业发展与就业创业指导教学评价

这里是引用 作为软工2203/2204班的学生&#xff0c;我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要&#xff0c;而您认真负责的教学态度&#xff0c;让课程的每一部分都充满了实用价值。 尤其让我…...

Mysql中select查询语句的执行过程

目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析&#xff08;Parser&#xff09; 2.4、执行sql 1. 预处理&#xff08;Preprocessor&#xff09; 2. 查询优化器&#xff08;Optimizer&#xff09; 3. 执行器…...

MFC 抛体运动模拟:常见问题解决与界面美化

在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...

免费数学几何作图web平台

光锐软件免费数学工具&#xff0c;maths,数学制图&#xff0c;数学作图&#xff0c;几何作图&#xff0c;几何&#xff0c;AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

【Linux】自动化构建-Make/Makefile

前言 上文我们讲到了Linux中的编译器gcc/g 【Linux】编译器gcc/g及其库的详细介绍-CSDN博客 本来我们将一个对于编译来说很重要的工具&#xff1a;make/makfile 1.背景 在一个工程中源文件不计其数&#xff0c;其按类型、功能、模块分别放在若干个目录中&#xff0c;mak…...

如何应对敏捷转型中的团队阻力

应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中&#xff0c;明确沟通敏捷转型目的尤为关键&#xff0c;团队成员只有清晰理解转型背后的原因和利益&#xff0c;才能降低对变化的…...

【Veristand】Veristand环境安装教程-Linux RT / Windows

首先声明&#xff0c;此教程是针对Simulink编译模型并导入Veristand中编写的&#xff0c;同时需要注意的是老用户编译可能用的是Veristand Model Framework&#xff0c;那个是历史版本&#xff0c;且NI不会再维护&#xff0c;新版本编译支持为VeriStand Model Generation Suppo…...

热门Chrome扩展程序存在明文传输风险,用户隐私安全受威胁

赛门铁克威胁猎手团队最新报告披露&#xff0c;数款拥有数百万活跃用户的Chrome扩展程序正在通过未加密的HTTP连接静默泄露用户敏感数据&#xff0c;严重威胁用户隐私安全。 知名扩展程序存在明文传输风险 尽管宣称提供安全浏览、数据分析或便捷界面等功能&#xff0c;但SEMR…...