字符函数和字符串函数

字符函数

1. 字符分类函数

C语⾔中有⼀系列的函数是专⻔做字符分类的,也就是⼀个字符是属于什么类型的字符的。这些函数的使⽤都需要包含⼀个头⽂件是 ctype.h
在这里插入图片描述
在这里插入图片描述
int islower ( int x);
islower 是能够判断参数部分的 x 是否是⼩写字⺟的。
通过返回值来说明是否是⼩写字⺟,如果是⼩写字⺟就返回⾮0的整数,如果不是⼩写字⺟,则返回0。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string>
#include<assert.h>
 int main()
{
	int a = islower('x');
	printf("%d\n", a);
    int b = islower('E');//islower函数当输入数是小写时输出非0的值
	printf("%d\n", b);
	if (a)
		printf("a是小写");
	else
		printf("a是大写");
	return 0;
}

在这里插入图片描述

2. 字符转换函数

C语⾔提供了2个字符转换函数:
int tolower ( int x ); //将参数传进去的⼤写字⺟转⼩写
int toupper ( int x ); //将参数传进去的⼩写字⺟转⼤写

int main()
{
	char arr[] = "im js xxs";
	int i = 0;
	while (arr[i])
	{   
		char x = toupper(arr[i]);
		printf("%c", x);
		i++;
	}
}

字符串函数

1.strlen函数

字符串以 ‘\0’ 作为结束标志,strlen函数返回的是在字符串中 ‘\0’ 前⾯出现的字符个数(不包含 ‘\0’ )。
• 参数指向的字符串必须要以 ‘\0’ 结束。
• 注意函数的返回值为size_t,是⽆符号的( 易错 )
• strlen的使⽤需要包含头⽂件

函数的使用:

int main()
{
	char arr[] = "abcdef";
	size_t a = strlen(arr);
	printf("%d", a);
	return 0;
}

strlen的模拟实现:

分法1计数法:
 size_t my_strlen(const char* p)
{
assert(*p);
	size_t  count = 0;
	while (*p != 0)
	{
		*p++;
		count++;
	}
	return count;
}
int main()
{
	//strlen函数的实现
	char arr[] = "abcdef";
	size_t a = my_strlen(arr);
	printf("%d", a);
	return 0;
}
方法2递归法:
size_t my_strlen(char* p)
{

	if (*p == '\0')
	{
		return 0;
	}
	else
		return 1 + my_strlen(p + 1);
}
int main()
{    //递归实现strlen
	char arr[] = "abcdef";
	size_t a = my_strlen(arr);
	printf("%zd", a);
	return 0;
}
分法3指针法:
size_t my_strlen(char* p)
{
	assert(*p);
	char* p1 = p;
	while (*p != '\0')
		p++;
	return p - p1;

}
int main()
{    //指针实现strlen
	char arr[] = "abcdef";
	size_t a = my_strlen(arr);
	printf("%zd", a);
	return 0;
}

2.strcpy函数

源字符串必须以 ‘\0’ 结束。
会将源字符串中的 ‘\0’ 拷⻉到⽬标空间。
⽬标空间必须⾜够⼤,以确保能存放源字符串。
⽬标空间必须可修改

strcpy的使用:

int main()

{
	//strcpy函数的实现
	char arr1[] = "abcdef";
	char arr2[10] = { 0 };
	size_t x = strlen(arr1);
	  strcpy(arr2, arr1);
	  for (int i = 0; i < x; i++)
	  {
		  printf("%c",arr2[i]);
	  }
	return 0;
}

strcpy的模拟实现:


```c
char* my_strcpy( char* p2, const char *p1)
{
	char* ret = p2;
	assert(p1 && p2);//assert(*p1);assert(*p2)l;
	while (*p1 != '\0')
	{
		*p2++ = *p1++;//*p2=*p1;p2++;p1++;
	}
	return ret;
}
int main()
{
	//strcpy函数的实现
	char arr1[] = "abcdef";
	char arr2[10] = { 0 };
	char* c=my_strcpy(arr2, arr1);
	printf("%s", c);
	return 0;
}

在这里插入图片描述

3.strcat函数

源字符串必须以 ‘\0’ 结束。
⽬标字符串中也得有 \0 ,否则没办法知道追加从哪⾥开始。
⽬标空间必须有⾜够的⼤,能容纳下源字符串的内容。
⽬标空间必须可修改。

strcat函数的使用:

int main()
{
	
	char arr1[20] = "abcdef";
	//strcat(arr1, "gh");
	
	printf("%s", arr1);
	return 0;
}
int main()
{
	//自己给自己追加
	char arr1[20] = "abcdef";
	strcat(arr1, arr1);
	printf("%s", arr1);
	return 0;
}

strcat函数的模拟现实:

char* my_strcat(char* p2, const char* p1)
{
	char* ret = p2;
	assert(p1 && p2);
	while (*p1!= '\0')//找到目标空间的/0
		p1++;
	while (*p1 != '\0')
			{
				*p2++ = *p1++;
			}
	return ret;

}
int main()
{
	//自己给自己追加
	char arr1[25] = "abcdef";
	//strcat(arr1, "gh");
	strcat(arr1, arr1);
	printf("%s", arr1);
	return 0;
}

在这里插入图片描述
后续补充其他字符串函数

  • 17
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值