字符函数与字符串函数1❤

一:字符分类函数

c语言中有一系列函数,可以对字符进行分类。也就是一个字符是属于哪类型的字符。这些都有相同的头文件<type.h>

函数	如果它的参数符合下列条件就返回真
iscntrl	任何控制字符
isspace	空白字符:空格‘ ’,换页‘\f’,换行'\n',回车'\r',制表符'\t',或垂直制表符'\v'
isdigit	十进制数字0~9
isxdigit	十六进制数字,包括所有十进制数字,小写字母a~f,大写字母A~F
islower	小写字母a~z
isupper	大写字母A~Z
isalpha	字母a~z或A~Z
isalnum	字母或数字a~z,A~Z或0~9
ispunct	标点符号,任何不属于数字或字母的图像字符(可打印符号)
isgraph	任何图像字符
isprint	任何可打印字符,包括图像字符和空白字符

二:字符转换函数

1:strlen 

strlen函数是一个字符串处理函数,用于获取字符串的长度。 它根据字符串结束的'0'字符来确定长度,并返回实际字符的个数。 strlen函数只适用于获取字符串的长度,不适用于其他类型的变量。

size_t strlen ( const char * str );
这是从cplusplus的解释。
可以看出它处理的对象是字符串
返回值是字符串的长度
返回类型是无符号整数

 2:strcpy

strcpy可以理解为string copy顾名思义为字符的复制,

char * strcpy ( char * destination, const char * source );
处理对象还是字符串,
返回值就是复制之后的字符串,
括号里面的第一个字符串是要复制的对象,第二个是源头,即提供复制的东西
注意:源头的\0也会复制过去

3:strcat

用于将一个字符串追加到另一个字符串的结尾

char * strcat ( char * destination, const char * source )
这个的用法跟上一个差不多,只是功能不一样。
注意:第一要找到目标字符串的\0
二:拷贝源头字符串的数据到目标空间的\0位置及其后面的空间

4.strcmp

strcmp可以理解为string compare

顾名思义,是两个字符串的比较

int strcmp ( const char * str1, const char * str2 )
比较对应位置上的字符大小,小的字符的字符串,小于另外一个字符串
注意:不是比较字符串的长度

5:strncpy strncat strncmp

因为 strcpy strcat strcmp 的长度不受限制的字符串函数,所以有一定的危险,在vs中就会报错

而strncpy strncat strncmp 这些字符串函数是规定了相应的长度,更加的安全

那么就用strncpy来举例

char * strncpy ( char * destination, const char * source, size_t num );
可以看出不同之处在于后面加了限制条件,即规定了拷贝源头的字符串的个数

三:字符转换函数的模拟实现

1:strlen

这里用递归的方法更加简单

int My_strlen(const char arr[])
{
	 if (*arr == '\0')
		 return 0;                            这里用递归非常简单,但是如果不明白的话,理解就有 
                                                                难度了
	 else
		 return 1 + My_strlen(arr + 1);
}
int main()
{
	char arr[] = "asdfwf";
	int ret=My_strlen(arr);
	printf("%d", ret);

	return 0;
}

2:strcpy

char* My_strcpy(char* dest, char* soce)
{
	char* ret = dest;
	assert(dest && soce);
	while (*dest++ = *soce++)    因为是先用dest和soce然后再加1这样就可以一个一个换,直到换到源头 
                                             的\0,这也停止运转。
	{
		;
	}
	return  ret;
}
int main()
{
	char arr1[20] = { 0 };
	char arr2[] = "123334";
	printf("%s", My_strcpy(arr1, arr2));


	return 0;
}

3:strcat

char* my_strcat(char* dest, const char* src)
{
	char* ret = dest;
	assert(dest && src);
	1. 找到目标空间的\0	
while (*dest)
	{
		dest++;
	}
	//2. 拷贝
	while (*dest++ = *src++)
	{
		;
	}

	return ret;
}

int main()
{
	char arr1[20] = "hello ";
	char arr2[] = "world";
	my_strcat(arr1, arr2);
	printf("%s\n", arr1);

	return 0;
}

4:strcmp

int My_strcmp(char* arr1, char* arr2)
{
	if (*arr1 == *arr2)
	{
		*arr1++;
		*arr2++;
		if (*arr1 == *arr2 == '\0')
			return 0;
	}
	else if (*arr1 > *arr2)
		return 1;
	else
		return -1;
		
		
}

int main()
{
	char arr1[] = "124442";
	char arr2[] = "3543645";
	int ret = My_strcmp(arr1, arr2);
	printf("%d", ret);
	return 0;
}

希望看官有所收获,希望点一个免费的小赞赞!!!!!!!!!!!!谢谢啦!!!!!!!!!

  • 22
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

大鹏蓄力中

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

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

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

打赏作者

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

抵扣说明:

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

余额充值