前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >字符函数和字符串函数

字符函数和字符串函数

作者头像
发布于 2024-04-30 13:15:04
发布于 2024-04-30 13:15:04
11600
代码可运行
举报
文章被收录于专栏:转自CSDN转自CSDN
运行总次数:0
代码可运行

字符分类函数

        C语言中专门分类字符的函数,需要头文件ctype.h

函数

符合条件返真

iscntrl

任何控制字符

isspace

空白字符 空格' ' 换页\f 换行\n 回车 \r 制表符\t 垂直制表符\v

isdigit

十进制数字

isxdigit

十六进制数字

islower

小写字母

isupper

大写字母

isalpha

字母

isalnum

字母或者数字

ispunct

标点符号

isgraph

任何图形字符

isprint

任何可打印字符

        这些函数的使用方法类似且简单

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
islower('b');

        例子:利用函数转换小写为大写

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int main()
{
	char arr[] = "I am a student";
	int i = 0;
	while (arr[i] != '\0')
	{
		if (islower(arr[i]))
		{
			arr[i] -= 'a' - 'A';
		}
		i++;
	}
	printf("%s", arr);
}

字符转换函数

        C语言仅提供了两个字符串转换函数:

int tolower (int c); //将参数传进去的大写字母转小写 int toupper (int c); //将参数传进去的小写字母转大写

        因此代码可以这样写

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int main()
{
	char arr[] = "I am a student";
	int i = 0;
	while (arr[i] != '\0')
	{
		arr[i] = toupper(arr[i]);
		i++;
	}
	printf("%s", arr);
}

strlen 函数

         size_t strlen(const char * str);

         字符串要以\0作为结束标志

        参数主席昂的字符串必须要以\0结束

        注意函数的返回值是size_t 是无符号

        strlen需要包含头文件

    模拟实现

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
size_t my_strlen(const char* s)
{
	if (*s == '\0')
	{
		return 0;
	}
	else
	{
		return 1 + my_strlen(++s);
	}
}

int main()
{
	char arr[] = "fllart";
	size_t c = my_strlen(arr);
	printf("%zu", c);
	return 0;
}

strcpy的使用和模拟实现

         char * strcpy(char * destination,const char * source);//目标 与 源

        源字符串必须以\0结束

会将源字符串中的\0拷贝到目标空间

        目标空间必须足够大,以确保能存放源字符串

        目标空间必须可修改

        模拟实现的例子 

                                strcpy strcat strcmp 和 strncpy strncat strncmp

                strcpy 是 string copy 拷贝字符串的意思

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int main()
{
	char arr[] = "hello";
	char arr2[10];
	strcpy(arr2, arr);
	printf("%s", arr2);
}

 模拟实现

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
char* my_strcpy(char* destination, const char* source)
{
	assert(source != NULL);
	assert(destination != NULL);
	char* ret = destination;
	while (*destination++ = *source++);
	return ret;
}

int main()
{
	char arr[] = "hello coconut";
	char arr2[50];
	my_strcpy(arr2, arr);
	printf("%s", arr2);
	return 0;
}

strcat的使用和模拟实现

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
char* strcat (char* destination, const char * source);

        源字符串必须以 \0 结束

        目标字符串也要有\0,否则无法知道从哪里开始

        目标空间必须足够大,能容下源字符串的内容

        目标空间必须可修改

        让字符串自己给自己追加

                 strcat是用来连接或者追加字符串的\

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int main()
{
	char arra[20] = "hello ";
	char arrb[20] = "word";
	strcat(arra, arrb);
	printf("%s", arra);
	return 0;
}

        模拟实现

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
char* my_strcat(char* destination, const char* source)
{
	assert(source != NULL);
	assert(destination != NULL);
	char* ret = destination;
	while (*destination != '\0')
		destination++;
	while (*destination++ = *source++);
	return ret;
}

int main()
{
	char arra[20] = "hello ";
	char arrb[20] = "word";
	my_strcat(arra, arrb);
	printf("%s", arra);
	return 0;
}

Strcmp的使用和实现

        第一个字符串大于第二个,返回大于0数字

        第一个字符串等于第二个,返回0

        第一个字符串小于第二个,返回小于0的值

                本质上可以认为是字符串对应位的ASCLL码值的比较

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int strcmp (const char * str1,const char * str2)

         例如

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int main()
{
	char arr1[] = "gadw";
	char arr2[] = "abcdef";
	int cmp = strcmp(arr1, arr2);
	printf("%zu", cmp);
	return 0;
}

         模拟实现

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int my_strcmp(const char* str1, const char* str2)
{
	while (*str1 == *str2)
	{
		if (*str1 == 0 && *str2 == 0)
		{
			return 0;
		}
		str1++;
		str2++;
	}
	return *str1 - *str2;
}

int main()
{
	char arr1[] = "gadw";
	char arr2[] = "abcdef";
	int cmp = my_strcmp(arr1, arr2);
	printf("%d", cmp);
	return 0;
}

strncpy strncat strncmp

        长度受限制的字符串函数

                   copy 不会补 \0 但是 cat 会补\0 

                   相比于普通的,只有限定字符少于源字符串长度才会限制,如果超过了和普通的没有区别

strstr

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
char* strstr ( const char * str1,const char * str2);

        函数返回字符串str2在字符串str1中第一次出现的位置

        若没有就返回空指针

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int main()
{
	char arr1[] = "223 123 456";
	char arr2[] = "123";
	char* ret = strstr(arr1, arr2);
	printf("%s", ret);
	return 0;
}

        模拟实现

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
char* my_strstr(const char* str1, const char* str2)//暴力查找法
{
	const char* s1 = NULL;
	const char* s2 = NULL;
	const char* cp = str1;//当前位置开始匹配 的 "位置"

	if (*str2 == '\0')
	{
		return (char*)str1;
	}
	while (*cp)
	{
		s1 = cp;
		s2 = str2;
		while (*s1!= '\0' && *s2 != '\0' && * s1 == *s2)
		{
			s1++;
			s2++;
		}
		if (*s2 == '\0')
		{
			return cp;
		}
		cp++;
	}
	return NULL;
}

 strtok函数的使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
char* strtok ( char * str,const char * sep);

        sep参数指向了一个字符串,定义了用作分隔符的字符集合

        第一个参数之地那个一个字符串,它包含了0个或者多个由sep字符串中的一个或多个分隔符分割的标记

         strtok函数找到str中的下一个标记,并将其用\0结尾,返回一个只想找个标记的指针

        strtok函数的第一个参数不为NULL,函数将找到str中第一个标记,strtok函数保存它在字符串中的位置.

        strtok函数的第一个参数为NULL,函数将在同一个字符串中被保存的位置开始,查找下一个标记

        如果字符串中不存在更多的标记,则返回NULL指针

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int main()
{
	char arr[1000] = "12323@213123.com.awdawd@adwadwa.@awerwa..@qawewa";
	char arr2[3000] = { 0 };
	strcpy(arr2, arr);
	const char* sep = "@.";
	int* ret = NULL;
	for (ret = strtok(arr2, sep); ret != NULL; ret = strtok(NULL, sep))
		printf("%s\n", ret);
	//ret = strtok(arr2, sep);
	//printf("%s\n", ret);
	//ret = strtok(NULL, sep);
	//printf("%s\n", ret);
	//ret = strtok(NULL, sep);
	//printf("%s\n", ret);
	return 0;
}

 strerror函数的使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
char * strerror(int errnum);

                用以把参数部分错误码对应的字符串的地址返回来

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-03-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
【图文】腾讯云服务器搭建网站教程(宝塔面板+wordpress)
建网站本身是没有什么难度的,只是配套需要的东西有些繁琐,我们需要提前准备一些软件之类的必备的东西,其中主要包括:
云上云
2019/07/02
10.4K2
【图文】腾讯云服务器搭建网站教程(宝塔面板+wordpress)
腾讯云服务器搭建网站只需7个步骤(宝塔面板+wordpress)
建网站本身是没有什么难度的,只是配套需要的东西有些繁琐,我们需要提前准备一些软件之类的必备的东西,其中主要包括:
用户2416682
2019/12/07
6.9K0
腾讯云服务器搭建网站只需7个步骤(宝塔面板+wordpress)
7天学会腾讯云服务器建站(三) – 利用宝塔面板创建网站和管理
在考虑到我们很多新手开始接触云服务器建站,所以采用目前比较流行且功能强大的宝塔面板,只要学着前面文章在腾讯云服务器中安装完毕宝塔面板,后面我们就可以像以前使用过虚拟主机一样在面板中添加网站和管理网站。今天将会在这篇文章中,介绍在前一篇安装完毕宝塔面板之后如何建站的。
老蒋
2019/04/26
2.9K0
云服务器搭建网站教程-用腾讯云服务器搭建网站
建网站本身是没有什么难度的,只是配套需要的东西有些繁琐,我们需要提前准备一些软件之类的必备的东西,其中主要包括:
用户6486825
2019/10/17
30.6K0
云服务器搭建网站教程-用腾讯云服务器搭建网站
使用腾讯云服务器怎么搭建网站?全自动部署建站教程
使用腾讯云服务器怎么搭建网站?全自动部署建站教程,使用腾讯云服务器怎么搭建WordPress网站?太简单了,现在已经不需要手动搭建WP博客了,腾讯云百科以轻量应用服务器为例,腾讯云集成了WordPress应用模板镜像,直接选择这个镜像,腾讯云系统会自动在后台为你的轻量应用服务器安装WordPress程序以及PHP、MySQL等WP依赖的LAMP或LNMP环境,不需要手动部署。
用户9264446
2024/05/25
5900
使用腾讯云服务器怎么搭建网站?全自动部署建站教程
WordPress搭建网站,需要掌握和了解哪些知识点?
对于很多完全没有接触过wordpress和网站搭建的用户来说,还是比较难的,需要学习和了解的知识点还是很多的,但是对于稍微熟悉了的用户来说基本上就是分分钟的事儿,今天就给大家盘点一下有哪些需要了解和掌握的知识点吧。
wordpress建站吧
2022/03/16
2.1K0
WordPress搭建网站,需要掌握和了解哪些知识点?
新手玩转腾讯云轻量级服务器搭建网站
相信不少人想拥有一个自己的网站,学习一下技术、写写文章。轻量级服务器特别适合新手使用,运行成本低。今天教大家使用轻量级服务器建网站。
幻影龙王
2021/08/28
14.2K7
新手玩转腾讯云轻量级服务器搭建网站
如何在腾讯云服务器上搭建一个宝塔面板的web网站?
建网站本身是没有什么难度的,只是配套需要的东西有些繁琐,我们需要提前准备一些软件之类的必备的东西,其中主要包括:
Kami米雅
2021/11/19
9.2K0
如何在腾讯云服务器上搭建一个宝塔面板的web网站?
如何利用腾讯云服务器搭建个人网站
你是否想要搭建一个网站,却苦苦找不到方法,你是否看到别人搭建的网站,自己羡慕不已,今天,就教大家来搭建一个简单的个人网站。
2022/02/21
14.4K0
如何利用腾讯云服务器搭建个人网站
【图文】腾讯云服务器搭建网站教程(宝塔面板+wordpress)
建网站本身是没有什么难度的,只是配套需要的东西有些繁琐,我们需要提前准备一些软件之类的必备的东西,其中主要包括:
2019/07/18
6.2K0
【玩转腾讯云】用轻量应用服务器搭建网站
不少小伙伴应该知道,腾讯云正在内测轻量应用服务器,而且马上就要公测了!我提前申请到了一台内测机器,那就来告诉大家,在公测后购买腾讯云轻量应用服务器之后如何玩转它吧,比如搭建静态或者动态网站!
Bess Croft
2020/06/12
11.9K2
【玩转腾讯云】用轻量应用服务器搭建网站
腾讯云服务器安装AMH面板部署wordpress博客网站教程
利用腾讯云服务器centos6.5使用AMH面板安装wordpress博客,相信很多新手朋友还是比较茫然的。这篇文章服务器租用网就教教大家如何使用腾讯云服务器centos6.5安装AMH面板,然后在使用AMH面板安装wordpress博客网站。
用户2416682
2019/08/26
6.5K0
腾讯云服务器安装AMH面板部署wordpress博客网站教程
腾讯云轻量应用服务器配置及建网站教程
腾讯云轻量应用服务器如何使用?新手站长以搭建WordPress为例,使用宝塔镜像,先在防火墙开通端口。腾讯云百科来详细说下腾讯云服务器从购买、配置到网站上线全流程,包括轻量服务器配置选择、应用镜像选择、重置密码、防火墙开放端口教程等详细教程:
用户9264446
2022/08/10
9.5K0
腾讯云轻量应用服务器配置及建网站教程
利用云服务器搭建网站教程
进入到了腾讯云界面,我们输入我们想注册的域名,然后查询,如果我们想要的域名没有被注册的话,我们就可以注册一个,各个后缀价格不同,看自己喜好。域名注册完成之后需要进行实名认证,腾讯云的速度的话我这里是几分钟就实名认证审核通过了,速度还是蛮快的.
Chuanrui 初见之旅
2022/11/14
4.9K0
利用云服务器搭建网站教程
腾讯云服务器搭建网站
对于服务器来说稳定、极速就选择 2核 4G内存配置的云服务器比较稳妥。这个配置跑网站是比较轻松无压力的。配上 avada主题,可以做出的很大气、高大上的企业网站。下面介绍腾讯云的长期优惠折扣活动,感兴趣的可以注册账号领代金券使用。
用户6577384
2019/10/29
22.5K0
腾讯云服务器搭建网站
使用腾讯云服务器搭建网站【PHP+MYSQL环境】教程
到目前为止本人做网站已经有半年了,对服务器配置略有了解。目前基本掌握了在cent os和windows server 2008/2012系统下搭建PHP+MYSQL环境的方法,所用到的软件也都是开源以及一些很好操作的软件,稍微有一些基础的同学都可以操作,在这个博文里我主要讲解阿里云的ECS的配置方法,腾讯的CVM的配置过程基本是一模一样,我就不再讲解了。
用户2416682
2019/10/14
4.3K0
使用腾讯云服务器搭建网站【PHP+MYSQL环境】教程
使用腾讯云服务器搭建网站【PHP+MYSQL环境】教程
到目前为止本人做网站已经有半年了,对服务器配置略有了解。目前基本掌握了在cent os和windows server 2008/2012系统下搭建PHP+MYSQL环境的方法,所用到的软件也都是开源以及一些很好操作的软件,稍微有一些基础的同学都可以操作,在这个博文里我主要讲解阿里云的ECS的配置方法,腾讯的CVM的配置过程基本是一模一样,我就不再讲解了。
用户6564993
2019/10/27
4.4K0
使用腾讯云服务器搭建网站【PHP+MYSQL环境】教程
用Linux云服务器搭建网站,看这一篇就够了!
搭建网站,很多人会选择手动搭建,或者直接选购镜像,一键部署网站。如果需要将网站发布到网络并对用户提供访问服务,则还需进行注册域名、网站备案、域名解析。
腾讯产业互联网学堂
2023/10/23
1.2K0
腾讯云服务器
阿里云上搭建php+mysql服务,并使用ftp将本地php文件及数据库文件上传到服务器
达达前端
2019/07/03
383.6K3
腾讯云服务器
腾讯云服务器购买了不会搭建环境怎么办?官方教程+镜像市场助你轻松上云
现在有很多传统虚拟主机用户和物理服务器用户都在慢慢的将网站迁移至腾讯云服务器,但是有很多用户不懂怎么给腾讯云服务器安装网站程序运行所必要的环境,同时又没有相应的技术支持人员,而花钱请人安装环境有担心安全和成本过高,这就导致了部分用户在网站迁移至云服务器的时候有些犹豫。
tengxunyun8点com活动整理
2019/11/27
10.9K0
腾讯云服务器购买了不会搭建环境怎么办?官方教程+镜像市场助你轻松上云
推荐阅读
相关推荐
【图文】腾讯云服务器搭建网站教程(宝塔面板+wordpress)
更多 >
LV.2
深圳市星速云网络科技有限公司系统运维
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档