字符函数和字符串函数(1)<C语言>

news2024/12/23 22:23:47

前言

        在C语言编写程序时,常常需要完成对字符和字符串的处理,为了快捷、方便处理字符和字符串,C语言内置了一些字符函数和字符串函数,所以下文将要介绍一些字符和字符串函数,如:头文件<ctype.h>包含的一些字符分类函数:islower()、isdigit()、isupper()、isalpha()等,头文件<string.h>包含的strlen()、strcpy()、strcat()、strcmp()、strncpy()、strncat()、strncmp()等。


目录

前言

头文件

 头文件

strlen()函数

        函数参数及其返回类型:

作用:

注意点:

模拟实现:

strcpy()函数

         函数参数及其返回类型:

作用:

注意点:

模拟实现:

 strcat()函数

         函数参数及其返回类型:

作用:

注意点:

模拟实现:

  strcmp()函数

         函数参数及其返回类型:

作用:

注意点:

模拟实现:


头文件<ctype.h>

        <ctype.h>下的所有函数传入参数和返回类型一般都是一样的,例如islower()函数。

int islower(int c)

字符分类函数的传入参数是一个字符或它的Ascii码值,返回值是一个零表示假,非零表示真。

常见的字符分类函数:

islower()——判断是否为小写字母

isupper()——判断是否为大写字母

isdigit()——判断是否为‘0’到‘9’的数字字符

isalpha()——判断是否为字母(包括大小写)

例如,使用islower()函数判断是否为小写,完成大小写转换:

//大写转小写lower函数
#include<ctype.h>//包含头文件<ctype.h>
#include<stdio.h>
int main() {
	char arr[20] = "hello world!";
	int i = 0;
	while (arr[i]) {
		if (islower(arr[i])) {//使用islower()函数完成判断
			arr[i] -= 32;//小写字母Ascii值-32得到大写字母
		}
		i++;
	}
	printf("%s", arr);
	return 0;
}

运行结果:

 

 在<ctype.h>头文件下还有两个特殊的函数:

int tolower(int c)//大写转小写
int toupper(int c)//小写转大写

使用这两个函数可直接完成对字符的大小写转换,它的返回值是转换后字母的Ascii码值,可以用字符类型接收。

示例:


 头文件<string.h>

        头文件<string.h>下包含的是一些对字符串进行处理的函数,下面将一一介绍。

strlen()函数
        函数参数及其返回类型:
size_t strlen(const char*str)
作用:

统计某个字符串\0前的字符个数。

注意点:

①strlen()函数只统计\0前的字符个数

②参数指向的字符串必须以\0结束

③strlen()返回值是size_t类型的,值得注意的是,当两个无符号整数进行运算时得到了一个负数,在无符号整数里是没有负数的,所以这个负数会被当成一个非常巨大的数。

模拟实现:

strlen()函数的模拟主要有三种:

①计数器:

②指针-指针

③递归:

strcpy()函数
         函数参数及其返回类型:
char* strcpy(char* destination ,const char* source);
作用:

拷贝源字符串到目的空间(包括\0

注意点:

①源字符一定要有\0,没有\0无法结束

②会拷贝\0到目的空间

③目标空间足够大能够放下源字符串

④目标空间必须可修改(如常量字符串不能被修改)

模拟实现:

 strcat()函数
         函数参数及其返回类型:
char* strcpy(char* destination ,const char* source);
作用:

追加字符,源字符串第一个字符替代目的字符串的\0

注意点:

①源字符串和目的字符串一定要有\0

②目的字符串也必须有\0,用来确认从哪里追加

③目标空间足够大能够放下源字符

④目标空间必须可修改(如常量字符串不能被修改)

⑤strcat()函数不能保证自己给自己追加。(原因:strcat()函数会使源字符串的第一个字符替代目的字符的\0,而源和目的皆为同一个字符串,所以源的\0也没有了,造成死循环)

模拟实现:

  strcmp()函数
         函数参数及其返回类型:
int strcpy(const char* str1 ,const char* str2);
作用:

按照Ascii码值比较对应字符返回值(大于:大于0的数,等于:等于0,小于:小于0)

注意点:

①从第一对字符开始比,对应字符Ascii码值一样,比较下一对

②对应字符不一样比较Ascii码值

③对应字符完全一样,但是长度不一样,长度长的的大(如:abc和abcd,abcd大)

模拟实现:

 Respect!

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

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

相关文章

将list对象里的某一个属性取出组成一个新的list

使用Java8将对象里的某一个属性取出组成一个新的list List<Spgg1> listnew ArrayList<>();Spgg1 spgg1new Spgg1();spgg1.setSpdm("测试");spgg1.setGgdm("001");list.add(spgg1);Spgg1 spgg2new Spgg1();spgg2.setSpdm("测试2");sp…

华为Ascend芯片显卡docker环境搭建并完成YOLO8推理

目前随着AI应用的爆发式增长&#xff0c;支持AI模型训练的显卡硬件也变得炙手可热。目前&#xff0c;由于xx颁布了芯片销售禁令&#xff0c;随着而来的是&#xff0c;在国内高端的英伟达显卡买不到了&#xff0c;中低端的显卡价格也水涨船高。在此环境下&#xff0c;华为技术有…

YAML详情

一、kubernetes支持对象 Kubernetes支持YAML和JSON格式管理资源对象 JSON格式&#xff1a;主要用于api接口之间消息的传递YAML格式&#xff1a;用于配置和管理&#xff0c;YAML是一种简洁的非标记性语言&#xff0c;内容格式人性化&#xff0c;较易读 二、YAML语法格式注意点 …

起保停电路工作原理

一、电路组成 起保停电路由电源保护设备&#xff08;空气开关&#xff09;、交流接触器、启动按钮、停止按钮和用电设备组成。 起保停电路的组成部分通常可分为四个部分&#xff1a; 保护部分&#xff1a;&#xff08;空气开关&#xff09;在电流或电压超出一定范围时自动切断…

web学习笔记(五十八)

目录 1. v-model 双向数据绑定 2. 事件修饰符 3. 路径别名 4. setup语法糖 4.1 语法糖的概念 4.2 setup语法糖 5. 配置代理服务器 1. v-model 双向数据绑定 v-model 双向数据绑定只能使用在表单标签&#xff1b; v-model双向数据绑定原理&#xff1a;采用 Object.de…

Unity3D让BoxCollider根据子物体生成自适应大小

系列文章目录 unity工具 文章目录 系列文章目录unity工具 &#x1f449;前言&#x1f449;一、编辑器添加&#x1f449;二、代码动态添加的方法(第一种)&#x1f449;三、代码动态添加的方法(第二种)&#x1f449;四、重新设置模型的中心点&#x1f449;壁纸分享&#x1f449;…

打卡信奥刷题(21)用Scratch图形化工具信奥P7071 [CSP-J2020] 优秀的拆分

使用2进制进行拆分是比较好的解决方案&#xff0c;毕竟对于大家来说二进制转换是非常熟的&#xff0c;如果不会可以参考打卡信奥刷题&#xff08;19&#xff09;用Scratch图形化工具信奥B3972 [语言月赛 202405] 二进制 题解 &#xff0c;输出的时候再转换一下输出&#xff0c;…

【剑指offer】2.2编程语言(p22-p25)——面试题1:string赋值运算函数

本节博客是对阅读剑指offer后的笔记归纳总结&#xff0c;有需要借鉴即可。 目录 1.p21-p25内容概要2.询问语法概念常考&#xff1a;CPP关键字理解举例&#xff1a;sizeof空类 3.分析代码举例&#xff1a;类中拷贝构造的无限递归问题 4.写代码常考点&#xff1a;类内成员函数、迭…

封装了一个iOS水平方向瀑布流布局

首先查看效果图 是支持多分区的 思路就是和竖直方向上的瀑布流布局是一样的&#xff0c; 只不过这里记录的列是水平方向的&#xff0c;同时要记录下 当前最小的x 所在的列&#xff0c;其实原理和竖直方向上的是相同的 &#xff0c;下面贴出代码 父类layout中的代码 // // …

MacOS使用PhpStorm+Xdebug断点调式

基本环境&#xff1a; MacOS m1 PhpStorm 2024.1 PHP7.4.33 Xdebug v3.1.6 1、php.ini 配置 [xdebug] zend_extension "/opt/homebrew/Cellar/php7.4/7.4.33_6/pecl/20190902/xdebug.so" xdebug.idekey "PHPSTORM" xdebug.c…

Java开发大厂面试第26讲:生产环境如何排查问题和优化 JVM?

通过前面几个课时的学习&#xff0c;相信你对 JVM 的理论及实践等相关知识有了一个大体的印象。而本课时将重点讲解 JVM 的排查与优化&#xff0c;这样就会对 JVM 的知识点有一个完整的认识&#xff0c;从而可以更好地应用于实际工作或者面试了。 我们本课时的面试题是&#x…

C++ (week4):Linux系统编程1:文件

文章目录 一、文件&#xff1a;Linux文件操作1.基于文件指针的文件操作2.Linux目录操作(1)目录路径0.error1.getcwd2.chdir3.创建目录&#xff1a;mkdir4.删除目录&#xff1a;rmdir5.unlink(路径名) (2)目录流 DIR*0.模型1.opendir&#xff1a;打开目录流2.closedir&#xff1…

MT3040 矩形覆盖

代码&#xff1a; #include <bits/stdc.h> using namespace std; typedef long long ll; const int N 3e5 10; int n, ans, d, w; stack<int> s; // 单调栈 // 如果楼高度类似121&#xff08;凸&#xff0c;两边相等&#xff0c;中间比两边的大&#xff09;&…

【C++】二叉树进阶(二叉搜索树)

目录 一、内容安排说明二、 二叉搜索树2.1 二叉搜索树概念2.2 二叉搜索树操作2.2.1 二叉搜索树的查找2.2.2 二叉搜索树的插入2.2.3 二叉搜索树的删除 2.3 二叉搜索树的代码实现2.3.1 二叉搜索树的节点设置2.3.2 二叉搜索树类的框架2.3.3 二叉搜索树的查找函数2.3.3.1 非递归方式…

如何使用多种算法解决LeetCode第135题——分发糖果问题

❤️❤️❤️ 欢迎来到我的博客。希望您能在这里找到既有价值又有趣的内容&#xff0c;和我一起探索、学习和成长。欢迎评论区畅所欲言、享受知识的乐趣&#xff01; 推荐&#xff1a;数据分析螺丝钉的首页 格物致知 终身学习 期待您的关注 导航&#xff1a; LeetCode解锁100…

企业档案管理系统软件都有哪些分类

企业档案管理系统软件可以根据其功能和特点进行分类。以下是一些常见的分类&#xff1a; 1. 全能类档案管理系统&#xff1a;提供文件存储和检索功能&#xff0c;并支持多种文件类型和格式的管理&#xff0c;如文本文件、图像文件、音频文件等。 2. 电子档案管理系统&#xff1…

源码编译安装LAMP(安装apeche mysql php 论坛 网站 巨详细版)

目录 一.LAMP架构相关概述 1.各组件作用 Linux&#xff08;平台&#xff09; Apache&#xff08;前台&#xff09; MySQL&#xff08;后台&#xff09; PHP/Perl/Python&#xff08;中间连接&#xff09; 总结 二.编译安装Apache httpd服务 1.关闭防火墙&#xff0c;将…

2024年【T电梯修理】考试内容及T电梯修理新版试题

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年【T电梯修理】考试内容及T电梯修理新版试题&#xff0c;包含T电梯修理考试内容答案和解析及T电梯修理新版试题练习。安全生产模拟考试一点通结合国家T电梯修理考试最新大纲及T电梯修理考试真题汇总&#xff0c;…

UI控件与视图层次:探索界面的无限可能

[OC]UI学习笔记 文章目录 [OC]UI学习笔记视图和视图层次结构CGRectUILabelUIButtonUIView控件UIView的层级关系UIWindow定时器和视图移动UISwitch进度条和滑动条控件步进器和分栏控件警告对话框与等待指示器UITextField 视图和视图层次结构 Objective-C中的UI编程主要围绕视图…

IO系列(八) -浅析NIO工作原理

一、简介 现在使用 NIO 的场景越来越多&#xff0c;很多网上的技术框架或多或少的使用 NIO 技术&#xff0c;譬如 Tomcat、Jetty、Netty&#xff0c;学习和掌握 NIO 技术已经不是一个 Java 攻城狮的加分技能&#xff0c;而是一个必备技能。 那什么是 NIO 呢&#xff1f; NIO…