C语言——字符函数和字符串函数(一)

📝前言:
这篇文章对我最近学习的有关字符串的函数做一个总结和整理,主要讲解字符函数和字符串函数(strlen,strcpy和strncpy,strcat和strncat)的使用方法,使用场景和一些注意事项(附上实例)

🎬个人简介:努力学习ing
📋个人专栏:C语言入门基础
🎀CSDN主页 愚润求学
🌄每日鸡汤:生活在自己的光里,不断吹饮内心的火焰


一,字符分类函数

📋C语言里提供一系列的函数专门用于字符分类,便于我们**判断一个字符是属于什么类型的字符**👇🏻
在这里插入图片描述
如islower:

int islower(int c)
islower就会判断参数部分的c是否是小写字母(字符→ASCII值)

1,使用实例(islower)

●这些函数的使用方法非常类似,一下对其中的islower做使用的展示👇🏻

代码作用:用islower判断字符后,将小写的字母转换为大写,其他字符不变

#include<stdio.h>
#include<ctype.h>
int main()
{
	char str[] = "Test Islower.";
	int sz = sizeof(str) / sizeof(str[0]);
	for (int i = 0; i < sz; i++) //用for循环,因为一次只能判断一个字符
	{
		if (islower(str[i]))  //判断是否为小写,小写就加入if语句
		{
			str[i] = str[i] - 32;  //将小写转换为大写
		}
		putchar(str[i]);  //输出字符
	}
	return 0;
}

输出结果👇🏻

这里是引用

二,字符转换函数

下面介绍两种可以实现大小写之间互相转化的函数👇🏻

1,int tolower(int c);大写字母转换为小写字母
2,int toupper(int c);小写字母转换为大写字母

在上一个用islower判断大小写后,我们是通过小写字符-32的形式来转化为大写字符的,这次我们使用toupper函数来实现转换👇🏻

#include<stdio.h>
#include<ctype.h>
int main()
{
	char str[] = "Test Islower.";
	int sz = sizeof(str) / sizeof(str[0]);
	for (int i = 0; i < sz; i++)
	{
		if (islower(str[i]))  
		{
			toupper(str[i]);  //使用toupper函数
		}
		putchar(str[i]);  
	}
	return 0;
}

输出结果👇🏻

这里是引用

三,函数strlen

用来计算字符串的长度

1,基本介绍

我们来看一下C语言官网对它的介绍👇🏻
在这里插入图片描述

●原文:C字符串的长度是由终止空字符决定:C字符串的长度等于字符串开头和终止字符之间的字符数(但不包括终止字符本身)
●通俗来讲就是:字符串开头到\0之前字符的个数

2,使用注意事项

🔍但是这也造成了strlen的“固执”,strlen只有遇到\0才会停止查找,否则就会一直查找

请看下面的代码👇🏻

#include<stdio.h>
#include<string.h>
int main()
{
	char arr1[] = "abcde";
	char arr2[] = { 'a','b','c','d','e'};
	printf("%d\n", strlen(arr1));
	printf("%d\n", strlen(arr2));
	return 0;
}

运行结果👇🏻

这里是引用
⭐结果不一样就是因为strlen在arr2的未知位置才找到了\0
arr1数组中存放的是:a b c d e \0程序自动在字符串后面补充了\0
arr2数组中存放的是:a b c d e 没有\0,因此strlen会一直找\0找到才停止,输出结果 33 其实是一个随机值(刚好strlen在内存里找到了\0

四,strcpy和strncpy

头文件:<string.h>
作用:复制字符串

1,strcpy

我们先来看strcmp👇🏻
在这里插入图片描述

函数原型:char* strcpy(char* destination, const char* source);

●对重要的内容解读一下与数理:
1,原字符串必须以\0结尾,函数复制完\0以后就会停止
2,目标空间要足够大,要存放的下所要复制的字符串
3,目标空间必须可修改(比如:字符数组可以修改,但是,常量字符串就是不能修改的)

实例👇🏻
在这里插入图片描述

但是,如果源字符里有\0,则复制完\0就会停止👇🏻
在这里插入图片描述

2,strncpy

和strcpy的区别就是多了一个n→num(复制的字符的个数)

char* strncpy(char* destination, const char* source, size_t num);

在这里插入图片描述
复制num个字符从源字符串到目标空间
●如果num>源字符串长度,则复制完源字符串后,目标后面追加0,直到num个
👇🏻
在这里插入图片描述
可以观察到:
num的限制就是刚好复制num个字符,并且没有更改目标空间原来后面的内容

五,strcat和strncat

头文件:<string.h>
作用:连接字符串

1,strcat

在这里插入图片描述

⭐提炼一下:
源字符串必须以\0结尾,函数追加完\0以后就会停止
●从目标中的终止空字符串开始覆盖(目标字符串也必须以\0结尾,因为目标字符串的\0就是开始追加的位置,这个\0会被覆盖掉)
目标空间要足够大(>(目标字符串+源字符串)的大小)
目标空间必须可以修改

实例👇🏻
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/3734b3c50102440fb3cdb47ba1ba5bd7.png
可见,源字符串中间有空字符也不会停止

2,strncat

在这里插入图片描述
⭐区别:
●从源字符串追加num个字符到目标字符串的末尾,追加完以后再追加一个\0
●如果num>源字符串长度,则只会将源字符串中\0之前的内容追加到目标字符串的末尾**

实例👇🏻
在这里插入图片描述


🌈我的分享也就到此结束啦🌈
要是我的分享也能对你的学习起到帮助,那简直是太酷啦!
若有不足,还请大家多多指正,我们一起学习交流!
📢公主,王子:点赞👍→收藏⭐→关注🔍
感谢大家的观看和支持!祝大家都能得偿所愿,天天开心!!!

  • 99
    点赞
  • 96
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 92
    评论
sscanf函数C语言中一个非常常用的函数,它可以将一个字符串按照指定的格式转换成相应的数据类型。在嵌入式开发中,sscanf函数也是非常常见的,因为很多时候需要从串口或者其他外部设备中读取数据,并将其转换成相应的数据类型进行处理。下面是一些sscanf函数的使用技巧: 1. 使用sscanf函数时一定要注意格式字符串的正确性。格式字符串中的占位符必须与待转换的数据类型相对应,否则会发生未知错误。 2. 如果待转换的字符串中包含多个数据,可以使用多个占位符进行转换。例如,如果待转换的字符串为"1,2,3",可以使用" %d,%d,%d"的格式字符串进行转换。 3. 可以使用sscanf函数的返回值来判断转换是否成功。如果返回值等于待转换字符串的长度,则说明转换成功,否则转换失败。 4. 如果待转换的字符串中包含浮点数,可以使用"%f"或者"%lf"的格式字符串进行转换。 5. 如果待转换的字符串中包含十六进制数,可以使用"%x"的格式字符串进行转换。 6. 如果待转换的字符串中包含字符字符串,可以使用"%c"或者"%s"的格式字符串进行转换。 7. 如果待转换的字符串中包含指针类型的数据,可以使用"%p"的格式字符串进行转换。 总之,在使用sscanf函数时一定要注意格式字符串的正确性,否则很容易出现转换错误的情况。同时,还应该注意sscanf函数返回值的判断,以确保转换的正确性。
评论 92
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

愚润求学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值