编程之路,从0开始:字符函数和字符串函数
Hello大家好!很高兴我们又见面了!
给生活添点passion,开始今天的编程之路!
目录
1、字符分类函数
2、字符转换函数
3、字符串函数
1、 strcpy
2、 strcat
3、 strcmp
4、strlen(s)
5、strstr(s1, s2)
6、 strtok(s1, s2)
1、字符分类函数
字符分类函数 如果符合就返回真
iscntrl 任何控制字符
isspace 空白字符
isdigit 十进制0到9
isxdigit 十六进制
islower 小写字母
isupper 大写字母
isalpha 字母
isalnum 字母或者数字
ispunct 标点符号
isgraph 任何图形字符
isprint 任何可打印字符
以上是字符分类函数的作用
2、字符转换函数
toupper() 函数将小写字母转换为大写字母。
tolower()函数将给定的字符转换成小写字母。
3、字符串函数
在C语言中给定的字符串函数很多:
1. strcpy(s1, s2):复制字符串,将s2复制到s1。
2. strncpy(s1, s2, n):复制字符串,将s2的前n个字符复制到s1。
3. strcat(s1, s2):连接字符串,将s2连接到s1的末尾。
4. strncat(s1, s2, n):连接字符串,将s2的前n个字符连接到s1的末尾。
5. strcmp(s1, s2):比较字符串,比较s1和s2,返回值表示s1和s2的字典顺序,大于0则s1在前。
6. strncmp(s1, s2, n):比较字符串,比较s1和s2的前n个字符。
7. strlen(s):计算字符串长度,返回s的长度,不包括结尾的空字符。
8. strchr(s, c):查找字符,返回指向s中第一次出现c的指针。
9. strrchr(s, c):查找字符,返回指向s中最后一次出现c的指针。
10. strstr(s1, s2):查找子串,返回指向s1中第一次出现s2的指针。
11. strtok(s1, s2):分割字符串,使用s2中的分隔符分割s1。
12. strtok_r(s1, s2, p):分割字符串,线程安全的版本。
13. strdup(s):复制字符串,动态分配内存并复制s。
14. strndup(s, n):复制字符串,动态分配内存并复制s的前n个字符。
15. strcoll(s1, s2):比较字符串,使用当前区域设置比较s1和s2。
16. strxfrm(s1, s2):转换字符串,转换s2以便使用strcoll比较。
这些字符串函数都包含在头文件string.h中
这里我们简单介绍几个常用的函数,并对他们进行模拟实现:
1、 strcpy
复制字符串,将s2复制到s1。
函数原型:
使用:
#include<stdio.h>
#include<stdio.h>
int main()
{char a[20] = "ADD";char b[20] = {0};strcpy(b,a);printf("%s",b);return 0;
}
模拟实现:
#include<stdio.h>
void My_strcpy(char *a,char *b)
{int i = 0;int* c = b;while (a[i] != '\0'){*(b+i) = *(a+i);i++;}}
int main()
{char a[20] = "asdasd";char b[20] = {0};My_strcpy(a,b);printf("%s",b);return 0;
}
2、 strcat
连接字符串,将s2连接到s1的末尾。
函数原型:
使用:
#include<stdio.h>
#include<stdio.h>
int main()
{char a[20] = "GET SOME";char b[20] = " PASSION";strcat(a,b);printf("%s",a);return 0;
}
模拟实现:
#include<stdio.h>
void My_strcat( char *a,const char *b)
{int i = 0;while (*a!='\0'){a++;}while (*a = *b){a++;b++;}}
int main()
{char a[20] = "ADD";char b[20] = "PASSION";My_strcat(a,b);printf("%s",a);return 0;
}
3、 strcmp
比较字符串,比较s1和s2,返回值表示s1和s2的字典顺序,大于0则s1在前。
使用:
#include<stdio.h>
#include<stdio.h>
int main()
{char a[20] = "GET SOME";char b[20] = " PASSION";if (strcmp(a, b) > 0){printf("%s", a);}return 0;
}
模拟实现:
#include<stdio.h>
int My_strcmp(const char *a,const char *b)
{int i = 0;int* c = b;while (*a==*b){if (*a == '\0'){return 0;}a++;b++;}return *a - *b;
}
int main()
{char a[20] = "asdasd";char b[20] = "asa";int ret=My_strcmp(a,b);printf("%d",ret);return 0;
}
4、strlen(s)
计算字符串长度,返回s的长度,不包括结尾的空字符。
使用:前面已经多次使用了,这里不再举例。
模拟实现:
#include<stdio.h>
int My_strlen(char *arr)
{int i = 0;int len = 0;for (i = 0;arr[i] != '\0';i++){len++;}return len;
}
int main()
{char a[]="asdasd";int len = My_strlen(a);printf("%d",len);return 0;
}
5、strstr(s1, s2)
查找子串,返回指向s1中第一次出现s2的指针。
使用:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
int main()
{char a[20] = "PASSION";char b[20] = "SS";char* c = strstr(a, b);printf("%s",c);return 0;
}
模拟实现:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
char *Mystrstr(const char a[], char* p)
{char* str = (char*)a;char* i=a;char* j = p;if (!*p){return a;}while (*str){i = str;j = (char*)p;while (*i && *j && (*i == *j)){i++;j++;}if (!*j){return str;}str++;}return (NULL);}
int main()
{char a[20] = "asdfghjkl";char* ret = Mystrstr(a,"dfg");printf("%s",ret);return 0;
}
6、 strtok(s1, s2)
分割字符串,使用s2中的分隔符分割s1。
使用:
#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>
#include <string.h>int main()
{char str[100] = "- This, a sample string.";char* pch = strtok(str, " ,.-");//将地址保存到遇到停止符之前,打印到遇到下一个停止符的时候printf("%s\n",pch);//pch = strtok(NULL, " ,.-");//第二次使用这个函数就将第一个参数换位NULLreturn 0;
}
这个函数有点复杂,就不模拟实现了hhh~
今天的内容就分享到这,欢迎订阅我们的专栏:编程之路,获取更多高质量内容!
相关文章:

编程之路,从0开始:字符函数和字符串函数
Hello大家好!很高兴我们又见面了! 给生活添点passion,开始今天的编程之路! 目录 1、字符分类函数 2、字符转换函数 3、字符串函数 1、 strcpy 2、 strcat 3、 strcmp 4、strlen(s) 5、strstr(s1, s2) 6、 strtok(s1, s2…...

化工防爆巡检机器人:在挑战中成长,为化工安全保驾护航
随着全球能源需求的不断攀升,化工行业的安全性与高效性愈发受到关注。化工设施规模巨大,而且其中多数存在高风险因素,像是易燃易爆化学物质、高温环境、有毒有害物质以及高压设备等。仅2023年,国内危化品事故就多达652起ÿ…...

音频采样数据格式
音频信号在模拟到数字转换时,会涉及到多个关键参数,如采样率、位深度、通道数等。下面是常见的音频采样数据格式及其相关概念: 1. 采样率 (Sample Rate) 采样率指的是每秒钟对音频信号进行采样的次数,单位为赫兹 (Hz)。常见的值…...
【pytorch】常用强化学习算法实现(持续更新)
持续更新常用的强化学习算法,采用单python文件实现,简单易读 2024.11.09 更新:PPO(GAE); SAC2024.11.12 更新:OptionCritic(PPOC) "PPO" import copy import time import torch import numpy as np import torch.nn as …...

DAY59||并查集理论基础 |寻找存在的路径
并查集理论基础 并查集主要有两个功能: 将两个元素添加到一个集合中。判断两个元素在不在同一个集合 代码模板 int n 1005; // n根据题目中节点数量而定,一般比节点数量大一点就好 vector<int> father vector<int> (n, 0); // C里的一…...
Mybatis执行自定义SQL并使用PageHelper进行分页
Mybatis执行自定义SQL并使用PageHelper进行分页 基于Mybatis,让程序可以执行动态传入的SQL,而不需要在xml或者Select语句中定义。 代码示例 pom.xml 依赖 <dependency><groupId>org.mybatis.spring.boot</groupId><artifactId&g…...
OpenCV DNN
OpenCV DNN 和 PyTorch 都是常用的深度学习框架,但它们的定位、使用场景和功能有所不同。让我们来对比一下这两个工具: 1. 框架和功能 OpenCV DNN:OpenCV DNN 模块主要用于加载和运行已经训练好的深度学习模型,支持多种深度学习…...
什么时候需要复写hashcode()和compartTo方法
在Java编程中,复写(重写)hashCode()和compareTo()方法的需求通常与对象的比较逻辑和哈希集合的使用紧密相关。但请注意,您提到的compartTo可能是一个拼写错误,正确的方法名是compareTo()。以下是关于何时需要复写这两个…...
PostgreSQL 日志文件备份
随着信息安全的建设,在三级等保要求中,要求日志至少保留半年 180 天以上。那么 PostgreSQL 如何实现这一要求呢。 我们需要配置一个定时任务,定时的将数据库日志 log 下的文件按照生成的规则将超过一定时间的日志拷贝到其它的路径下…...

2023年MathorCup数学建模B题城市轨道交通列车时刻表优化问题解题全过程文档加程序
2023年第十三届MathorCup高校数学建模挑战赛 B题 城市轨道交通列车时刻表优化问题 原题再现: 列车时刻表优化问题是轨道交通领域行车组织方式的经典问题之一。列车时刻表规定了列车在每个车站的到达和出发(或通过)时刻,其在实际…...

数字农业产业链整体建设方案
1. 引言 数字农业产业链整体建设方案旨在通过数字化手段提升农业产业效率与质量,推动农业现代化进程。方案聚焦于资源数字化、产业数字化、全局可视化与决策智能化的实现,构建农业产业互联网平台,促进农业全流程、全产业链线上一体化发展。 …...
awk那些事儿:在awk中使用shell变量的两种方式
awk是Linux中一款非常好用的程序,可以逐行处理文件,并提供了强大的语法和函数,和grep、sed一起被称为“Linux三剑客”。 在使用awk处理文件时,有时会用到shell中定义的变量,由于在shell中变量的调用方式是通过$符号进…...

大数据面试题--kafka夺命连环问(后10问)
目录 16、kafka是如何做到高效读写? 17、Kafka集群中数据的存储是按照什么方式存储的? 18、kafka中是如何快速定位到一个offset的。 19、简述kafka中的数据清理策略。 20、消费者组和分区数之间的关系是怎样的? 21、kafka如何知道哪个消…...
智能量化交易的多样化策略与风险控制:中阳模型的应用与发展
随着金融市场的不断创新与发展,智能量化交易正逐渐成为金融投资的重要手段。中阳智能量化交易模型通过技术优势、策略优化与实时风险控制等多方面结合,为投资者提供了强有力的工具支持。本文将对中阳量化模型的技术细节、多策略组合与市场适应性进行深入…...

小皮PHP连接数据库提示could not find driver
最近遇到一个奇怪的问题,我的小皮上安装的8.0.2版本的php连接数据库正常。下载使用8.2.9时,没有php.ini,把php-development.ini改成 php.ini后,就提示could not find driver。 网上查了说把php.ini里的这几个配置打开,我也打开了&…...

2024.11.13(一维数组相关)
思维导图 1> 提示并输入一个字符串,统计该字符串中大写字母、小写字母、数字字符、空格字符的个数并输出 2> 提示并输入一个字符串,将该字符串中的所有字母挑选到一个新数组中,将所有的数字字符挑选到另一个新数组中。并且将数字字符对…...

豆包MarsCode算法题:数组元素之和最小化
数组元素之和最小化 问题描述思路分析分析思路解决方案 参考代码(Python)代码分析1. solution 函数2. 计算 1 2 3 ... n 的和3. 乘以 k 得到最终的数组元素之和4. 主程序(if __name__ __main__:)代码的时间复杂度分析&#x…...

Hbase Shell
一、启动运行HBase 首先登陆SSH,由于之前在Hadoop的安装和使用中已经设置了无密码登录,因此这里不需要密码。然后,切换至/usr/local/hadoop,启动Hadoop,让HDFS进入运行状态,从而可以为HBase存储数据&#…...
激活函数解析:神经网络背后的“驱动力”
神经网络中的激活函数(Activation Function)是其运作的核心组件之一,它们决定了神经元如何根据输入信号进行“激活”,进而影响整个模型的表现。理解激活函数的工作原理对于设计和优化神经网络至关重要。本篇博客将深入浅出地介绍各…...

【开源免费】基于SpringBoot+Vue.JS水果购物网站(JAVA毕业设计)
博主说明:本文项目编号 T 065 ,文末自助获取源码 \color{red}{T065,文末自助获取源码} T065,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析…...

idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...

简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...

ABAP设计模式之---“简单设计原则(Simple Design)”
“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...
CSS设置元素的宽度根据其内容自动调整
width: fit-content 是 CSS 中的一个属性值,用于设置元素的宽度根据其内容自动调整,确保宽度刚好容纳内容而不会超出。 效果对比 默认情况(width: auto): 块级元素(如 <div>)会占满父容器…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...