前言:
这篇文章对我最近学习的有关字符串的函数做一个总结和整理,主要讲解字符函数和字符串函数(strlen,strcpy和strncpy,strcat和strncat)的使用方法,使用场景和一些注意事项(附上实例)
个人简介:努力学习ing
个人专栏:C语言入门基础
CSDN主页 愚润求学
每日鸡汤:生活在自己的光里,不断吹饮内心的火焰
C语言里提供一系列的函数专门用于字符分类,便于我们**判断一个字符是属于什么类型的字符**
如islower:
int islower(int c)
islower
就会判断参数部分的c是否是小写字母(字符→ASCII值)
●这些函数的使用方法非常类似,一下对其中的islower做使用的展示
代码作用:用islower判断字符后,将小写的字母转换为大写,其他字符不变
#include
#include
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
#include
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;
}
输出结果
用来计算字符串的长度
●原文:C字符串的长度是由终止空字符决定:C字符串的长度等于字符串开头和终止字符之间的字符数(但不包括终止字符本身)
●通俗来讲就是:字符串开头到\0
之前字符的个数
但是这也造成了strlen的“固执”,strlen只有遇到\0
才会停止查找,否则就会一直查找
请看下面的代码
#include
#include
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
)
头文件:
作用:复制字符串
函数原型:
char* strcpy(char* destination, const char* source);
●对重要的内容解读一下与数理:
1,原字符串必须以\0
结尾,函数复制完\0
以后就会停止
2,目标空间要足够大,要存放的下所要复制的字符串
3,目标空间必须可修改(比如:字符数组可以修改,但是,常量字符串就是不能修改的)
和strcpy的区别就是多了一个n→num(复制的字符的个数)
char* strncpy(char* destination, const char* source, size_t num);
●复制num个字符从源字符串到目标空间
●如果num>源字符串长度,则复制完源字符串后,目标后面追加0,直到num个
可以观察到:
num的限制就是刚好复制num个字符,并且没有更改目标空间原来后面的内容
头文件:
作用:连接字符串
⭐提炼一下:
●源字符串必须以\0
结尾,函数追加完\0
以后就会停止
●从目标中的终止空字符串开始覆盖(目标字符串也必须以\0
结尾,因为目标字符串的\0
就是开始追加的位置,这个\0
会被覆盖掉)
●目标空间要足够大(>(目标字符串+源字符串)的大小)
●目标空间必须可以修改
⭐区别:
●从源字符串追加num个字符到目标字符串的末尾,追加完以后再追加一个\0
●如果num>源字符串长度,则只会将源字符串中\0
之前的内容追加到目标字符串的末尾**
我的分享也就到此结束啦
要是我的分享也能对你的学习起到帮助,那简直是太酷啦!
若有不足,还请大家多多指正,我们一起学习交流!
公主,王子:点赞→收藏⭐→关注
感谢大家的观看和支持!祝大家都能得偿所愿,天天开心!!!