《重生到现代之从零开始的C语言生活》—— 字符函数和字符串函数
字符函数和字符串函数
字符分类函数
大家知道字符是分为很多种类型的
就比如说’a’ ‘1’ 'A’等等,所以我们需要一种函数来完成字符函数的分类
这就是字符分类函数
函数需要包含头文件<ctype.h>
函数的运行规则是:如果符合下列参数就返回真
- inscntrl(控制任何字节)
- isspace(空白字符:空格,\f,\n,\r,\t,\v)
- isdigit(十进制数字’0’~'9’字符)
- isxdigit(十六进制数字,包括十进制狮子字符,小写字母a~f,大写字母A到F)
- islower(小写字母a~z)
- isupper(大写字母A~Z)
- isalnum(字母或者数字)
- ispunct(标点符号,任何不属于数字或者字母的图形字符)
- isgraph(任何图形字符)
- isprint(任何可以打印字符,包括图形字符和空白字符)
我们该怎么使用这些函数呢?
int isupper(int c )
函数就是判断参数部分的c是否是大写字母
如果是大写字母,就返回非零的整数,如果不是大写,则返回0
字符转换函数
什么是字符转换函数呢?
就是可以将字符之间完成转换
int tolower (int c);//将参数传进去的大写字母转小写
int toupper (int c);//将参数传进去的小写字母转大写
细讲strlen函数
之前我们了解过strlen函数,是用来统计字符个数的
现在我们来细讲一下
strlen函数的形式
size_t strlen(const char *str);
就是说返回值是size_t,如果我们想储存他的结果,就是需要size_t类型的变量来储存,值得注意的是size_t是无符号的,就是没有正负之分
我们来模拟一下strlen函数,更好的理解他
#include <stdio.h>
size_t m_strlen(char *p)
{size_t con = 0;while (*p){p++;con++;}return con;}
int main()
{char arr[6] = "abcde";size_t a = m_strlen(arr);printf("%zd", a);return 0;
}
strcpy
strcpy就是将源字符串中的代码拷贝到目标字符串
char * strcpy(char *p,const char * pp);
其中,p是目标字符串,pp是源字符串
运行过程是:strcpy将目标字符串与原字符串一一替换,直到替换到源字符串的/0部分
前提条件是目标函数的容量一定要足够大,起码要放的下源字符串
那就模拟一下strcpy函数
#include<stdio.h>
void m_strcpy(char* p, char* pp)
{while (*p = *pp){*p++;*pp++;if (*pp == '\0'){//for循环一个字符打印后面的字符break;}}}
int main()
{char arr1[] = "abcdef";char arr2[] = "efg";m_strcpy(arr1, arr2);printf("%s", arr1);return 0;
}
strcat
strcat函数的用法是:将源函数追加到目标函数后面。细节如下:
- 源字符串必须以\0结尾,因为追加的时候目标函数的\0会被取代,如果没有则追加后的函数将没有\0
- 目标字符也必须有\0,因为如果没有就不知道从哪里追加
- 目标函数的空间必须足够大,不然会溢出
那我们就再模拟一下strcat函数:
#include<stdio.h>
void m_strcat(char* a, char* b)
{char** p = b;while (*a != '\0'){a++;}while (*b != '\0'){*a = *b;a++;b++;}*++a = *++b;
}
int main()
{char arr1[10] = "abcd";char arr2[] = "aaa";m_strcat(arr1, arr2);printf("%s\n", arr1);return 0;
}
strcmp
strcmp就是将两个字符串中的每个字符进行比较
- 如果第一个字符串大于第二个字符串,则返回大于零的数字
- 第一个字符串等于第二个字符串,则返回零
- 第一个字符串小于第二个字符串,则返回小于零的数字
而判断两个字符串的大小是相同位置的ASCII码值,将两个字符串同位置的字符一个一个的比较,直到比较出不相同的一个字符,如果都相同,那么返回0
strn系列
其实字符函数还有strncpy,strncat,strncmp,他们与前面说的strcpy,strcat,strcmp都有一点的不同,那么不同的点是什么呢?
那就是在传参时,后面要多加一个size_t num
- strncpy:char * strncpy ( char * destination, const char * source, size_t num );
- strncat :char * strncat ( char * destination, const char * source, size_t num );
- strncmp:int strncmp ( const char * str1, const char * str2, size_t num );
后面的size_t num的意思都是,最多操作多少个字符
假如说strncpy的后面传参的num是3,意思是只3拷贝3个字符,其他的函数的意思也基本一致。
strtok函数
strtok函数起摘取作用,就是将一个字符串中用特定字符串分割的函数将分割的部分都摘取出来
strtok的表现形式
char * strtok ( char * str, const char * sep);
实参sep指向了一个字符串,定义了分割字符的集合
今天的知识讲解完啦,如果觉得有用可以点一下赞和关注,也可以先收藏以防需要时找不到哦,当然如果作者写的哪里有问题欢迎指出,我们一起进步!!!
祝看到这里的人天天开心哦(笔芯)
相关文章:
《重生到现代之从零开始的C语言生活》—— 字符函数和字符串函数
字符函数和字符串函数 字符分类函数 大家知道字符是分为很多种类型的 就比如说’a’ ‘1’ A’等等,所以我们需要一种函数来完成字符函数的分类 这就是字符分类函数 函数需要包含头文件<ctype.h> 函数的运行规则是:如果符合下列参数就返回真 …...
双指针:滑动窗口
题目描述 给定两个字符串 S 和 T,求 S 中包含 T 所有字符的最短连续子字符串的长度,同时要求时间复杂度不得超过 O(n)。 输入输出样例 输入是两个字符串 S 和 T,输出是一个 S 字符串的子串。样例如下: 在这个样例中,…...
云原生(四十八) | Nginx软件安装部署
文章目录 Nginx软件安装部署 一、Nginx软件部署步骤 二、安装与配置Nginx Nginx软件安装部署 一、Nginx软件部署步骤 第一步:安装 Nginx 软件 第二步:把 Nginx 服务添加到开机启动项 第三步:配置 Nginx 第四步:启动Nginx …...
【WPF开发】如何设置窗口背景颜色以及背景图片
在WPF中,可以通过设置窗口的 Background 属性来改变窗口的背景。以下是一些设置窗口背景的不同方法: 一、设置纯色背景 1、可以使用 SolidColorBrush 来设置窗口的背景为单一颜色。 <Window x:Class"YourNamespace.MainWindow"xmlns&quo…...
USB 3.0?USB 3.1?USB 3.2?怎么区分?
还记得小白刚接触电脑的时候,电脑普及的USB接口大部分是USB 2.0,还有少部分USB 1.0的(现在基本上找不到了)。 当时的电脑显示器,可能00后的小伙伴都没见过,它们大概长这样: 当时小白以为电脑最…...
Gitlab实战教程:打造企业级代码托管与协作平台!
目录 一、Gitlab概述1、Gitlab简介(1)Gitlab的定义(2)Gitlab与Git的关系(3)Gitlab的主要功能 2、Gitlab与Git的关系(1)Git的基本概念(2)Gitlab与Git的关联&am…...
更新C语言题目
1.以下程序输出结果是() int main() {int a 1, b 2, c 2, t;while (a < b < c) {t a;a b;b t;c--;}printf("%d %d %d", a, b, c); } 解析:a1 b2 c2 a<b 成立 ,等于一个真值1 1<2 执行循环体 t被赋值为1 a被赋值2 b赋值1 c-- c变成1 a<b 不成立…...
struct和C++的类
1.铺垫 1.1想看明白这章节,必须要懂得C语言的struct结构体、C语言深度解剖的static用法、理解声明与定义,C的类和static用法;否则看起来有些吃力 2.引子 2.1struct结构体里面只能存储内置类型;比如:char、short、 i…...
【数据结构与算法】LeetCode:图论
文章目录 LeetCode:图论岛屿数量(Hot 100)岛屿的最大面积腐烂的橘子(Hot 100)课程表(Hot 100) LeetCode:图论 岛屿数量(Hot 100) 岛屿数量 DFS: class So…...
YOLOv8 基于NCNN的安卓部署
YOLOv8 NCNN安卓部署 前两节我们依次介绍了基于YOLOv8的剪枝和蒸馏 本节将上一节得到的蒸馏模型导出NCNN,并部署到安卓。 NCNN 导出 YOLOv8项目中提供了NCNN导出的接口,但是这个模型放到ncnn-android-yolov8项目中你会发现更换模型后app会闪退。原因…...
【Python|接口自动化测试】使用requests发送http请求时添加headers
文章目录 1.前言2.HTTP请求头的作用3.在不添加headers时4.反爬虫是什么?5.在请求时添加headers 1.前言 本篇文章主要讲解如何使用requests请求时添加headers,为什么要加headers呢?是因为有些接口不添加headers时,请求会失败。 2…...
需求管理工具Jama Connect:与Jira/Slack/GitHub无缝集成,一站式解决复杂产品开发中的协作难题
在产品和软件开发的动态世界中,有效协作是成功的关键。然而,团队往往面临着阻碍进步和创新的重大挑战。了解这些挑战并找到强有力的解决方案,对于实现无缝、高效的团队协作至关重要。Jama Connect就是这样一种解决方案,它是一个功…...
CSP-J/S 复赛算法 背包DP
文章目录 前言背包DP的简介问题描述目标解决方法1. **定义状态**2. **状态转移方程**3. **初始化**4. **目标**举个例子动态规划解决背包问题的核心 DP背包问题示例代码问题描述代码实现核心代码讲解:举例:总结: 总结 前言 背包问题是算法竞…...
如何评估和部署 IT 运维系统?
如何才能将如此新兴、流行的技术转化为企业中实用的系统环境呢? 为此,我们采访了一家已经成功部署IT运维体系的大型企业的IT总监龙先生,请他给我们讲一下企业应该如何真正评估和部署自己的IT运维体系。 真理就是价值。 1.评估选择…...
正态分布的极大似然估计一个示例,详细展开的方程求解步骤
此示例是 什么是极大似然估计 中的一个例子,本文的目的是给出更加详细的方程求解步骤,便于数学基础不好的同学理解。 目标 假设我们有一组样本数据 x 1 , x 2 , … , x n x_1, x_2, \dots, x_n x1,x2,…,xn,它们来自一个正态分布 N…...
s7-200SMART编程软件下载
1、官网: STEP 7 Micro/WIN SMART V2.2 完整版http://w2.siemens.com.cn/download/smart/STEP%207%20MicroWIN%20SMART%20V2.2.zip STEP 7 Micro/WIN SMART V2.3 完整版http://w2.siemens.com.cn/download/smart/STEP%207%20MicroWIN%20SMART%20V2.3.iso STEP 7 Mi…...
Linux驱动开发常用调试方法汇总
引言:在 Linux 驱动开发中,调试是一个至关重要的环节。开发者需要了解多种调试方法,以便能够快速定位和解决问题。 1.利用printk 描述: printk 是 Linux 内核中的一个调试输出函数,类似于用户空间中的 printf。它用于…...
将列表中的各字符串sn连接成为一个字符串s使用;将各sn间隔开os.pathsep.join()
【小白从小学Python、C、Java】 【考研初试复试毕业设计】 【Python基础AI数据分析】 将列表中的各字符串sn 连接成为一个字符串s 使用;将各sn间隔开 os.pathsep.join() [太阳]选择题 下列说法中正确的是? import os paths ["/a", "/b/c", "/d&q…...
算法题总结(八)——字符串
531、反转字符串二 给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。 如果剩余字符少于 k 个,则将剩余字符全部反转。如果剩余字符小于 2k 但大于或等于 k 个,…...
大数据开发--1.2 Linux介绍及虚拟机网络配置
目录 一. 计算机入门知识介绍 软件和硬件的概述 硬件 软件 操作系统概述 简单介绍 常见的系统操作 学习Linux系统 二. Linux系统介绍 简单介绍 发行版介绍 常用的发行版 三. Linux系统的安装和体验 Linux系统的安装 介绍 虚拟机原理 常见的虚拟机软件 体验Li…...
5分钟精通B站音频提取:从新手到高手的开源工具实战指南
5分钟精通B站音频提取:从新手到高手的开源工具实战指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/…...
Pixel Epic智识终端效果展示:跨领域研报生成一致性与专业性验证
Pixel Epic智识终端效果展示:跨领域研报生成一致性与专业性验证 1. 产品概览与核心价值 Pixel Epic智识终端是一款基于AgentCPM-Report大模型构建的专业研究报告生成工具。与传统AI工具不同,它创新性地采用了像素RPG游戏的美学设计,将枯燥的…...
AI中混淆矩阵及其核心评估指标案例
AI中混淆矩阵及其核心评估指标案例...
保姆级避坑指南:在Ubuntu 22.04上为ROS2 Humble编译OpenCV 4.2.0和cv_bridge
深度解析:Ubuntu 22.04下ROS2 Humble与OpenCV 4.2.0的精准版本匹配实战 当视觉SLAM遇上ROS2生态,版本依赖就像一场精密的外科手术。本文将带你穿透ORB-SLAM3等视觉算法与ROS2 Humble环境整合时的核心痛点——特别是OpenCV 4.2.0与cv_bridge的版本锁定机…...
Laya3D美术进阶:巧用Shader实现APP级游戏效果还原
1. 为什么选择Laya3D的Shader技术? 很多开发者第一次接触Laya3D时,都会有个疑问:为什么不用Unity直接开发?特别是在微信小游戏这个特定场景下,Laya3D的Shader技术到底能带来什么优势?我做了三年Laya小游戏…...
OpenHarmony基线移植实战:从开源仓到定制仓的完整路径
1. 为什么需要移植OpenHarmony基线? 第一次接触OpenHarmony基线移植时,我也很困惑:为什么不能直接用官方开源代码?非要折腾这一套移植流程?直到在实际项目中踩了几个坑才明白,基线移植是产品开发的必经之路…...
效果实测:Image-to-Video如何将风景照变成动态视频?
效果实测:Image-to-Video如何将风景照变成动态视频? 1. 惊艳的开场:静态照片"活"起来了 想象一下,你手机里那些美丽的风景照片突然"活"了过来——海浪开始翻滚,云朵缓缓飘动,树叶在微…...
08-多平台集成实战
OpenClaw 多平台集成实战 “让 AI 助手跨越每个通讯渠道,无处不在。” — OpenClaw 在当今多元化的通讯环境中,一个优秀的 AI 助手不应该被限制在单一平台上。OpenClaw 的核心优势之一就是其强大的多平台集成能力,能够同时连接 Discord、Telegram、飞书、企业微信、QQ、钉钉…...
Qwen3.5-9B-AWQ-4bit惊艳效果:多对象复杂场景图中主次关系与逻辑推断展示
Qwen3.5-9B-AWQ-4bit惊艳效果:多对象复杂场景图中主次关系与逻辑推断展示 1. 模型能力概览 千问3.5-9B-AWQ-4bit是一款突破性的多模态AI模型,它能够像人类一样"看懂"图片并做出智能分析。不同于传统图像识别工具,这个模型最令人惊…...
Nunchaku FLUX.1 CustomV3部署案例:AI绘画培训课程实训环境标准化镜像交付方案
Nunchaku FLUX.1 CustomV3部署案例:AI绘画培训课程实训环境标准化镜像交付方案 1. 引言:当AI绘画遇上教育培训的规模化挑战 如果你正在运营一个AI绘画培训班,或者负责一个数字艺术学院的课程设计,你肯定遇到过这样的难题&#x…...
