C语言字符函数和字符串函数详解
创作时间:
作者:
@小白创作中心
C语言字符函数和字符串函数详解
引用
CSDN
1.
https://blog.csdn.net/2302_80803681/article/details/139033095
前言
在C语言编写程序时,常常需要完成对字符和字符串的处理,为了快捷、方便处理字符和字符串,C语言内置了一些字符函数和字符串函数。下文将介绍一些常用的字符和字符串函数,包括<ctype.h>中的字符分类函数(如islower()、isdigit()、isupper()、isalpha()等)和<string.h>中的字符串处理函数(如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* strcat(char* destination ,const char* source);
作用:追加字符,源字符串第一个字符替代目的字符串的\0
注意点:
- 源字符串和目的字符串一定要有
\0
。 - 目的字符串也必须有
\0,
用来确认从哪里追加 - 目标空间足够大能够放下源字符
- 目标空间必须可修改(如常量字符串不能被修改)
- strcat()函数不能保证自己给自己追加。(原因:strcat()函数会使源字符串的第一个字符替代目的字符的
\0,
而源和目的皆为同一个字符串,所以源的\0
也没有了,造成死循环)
strcmp()函数
函数参数及其返回类型:
int strcmp(const char* str1 ,const char* str2);
作用:按照Ascii码值比较对应字符返回值(大于:大于0的数,等于:等于0,小于:小于0)
注意点:
- 从第一对字符开始比,对应字符Ascii码值一样,比较下一对
- 对应字符不一样比较Ascii码值
- 对应字符完全一样,但是长度不一样,长度长的的大(如:abc和abcd,abcd大)
模拟实现:
Respect!
热门推荐
“12342工作法” 打造应急治理“韧性社区”
美丽与自我价值,从觉得自己丑到拥抱生命之美
婚姻中的挑战:如何应对平淡期的来临?
秋冬季节,如何预防感冒?
针灸推拿:传统中医的神奇“手艺”
图的存储—邻接矩阵和邻接表
数码宝贝中的十斗士:古代数码世界的守护者
高考填志愿的网站叫什么?附2025官方及辅助系统的网址(31省市)
厦门大学校长张宗益:写好嘉庚精神传承与创新大文章 加快推进教育科技人才一体化发展
为什么吃中药会腹泻?医生的专业解答来了
法院判决后判决书多久送达
发射架下砺精兵 强军征程写忠诚
创新与艺术的碰撞:探索科技与艺术融合的独特魅力
打呼噜不只是“扰民”那么简单,注意8个因素,4个方法缓解
无管件底滤鱼缸优缺点(无管件底滤鱼缸优缺点分析)
羽毛球运动速度和力量训练方法和生化研究论文
中级经济法在线做题:法律视角下的学习与实践策略
下眼袋肿胀疼痛时热敷有用吗
景德镇必吃十大馆子排名:深入探索瓷都美食
南京社保自己缴费操作指南
十个维度问健康——三问头身
戒烟多久才能消除烟瘾
西安武警眼科医院四大特色技术详解
喝补气血和补脾胃中药后腹泻是什么原因
股票开盘前如何买
刘禅资料库:出装铭文解析、打法攻略及克制关系大全
跨越国界的关怀:外国人在中国面对艾滋病的挑战与希望
什么是搜索引擎营销?他有哪些特点和方式?
猫咪呕吐未消化食物?可能的原因与解决办法全解析!
银行的定期一本通和存单有什么区别?