字符串函数与字符函数运用(1)

发布于:2024-05-02 ⋅ 阅读:(18) ⋅ 点赞:(0)


前言

字符串函数大概有以下这几种 strcpy、strcat 、strcmp、strncpy、strncat、strncmp、strstr、strtok、strerror

这些函数可以很好的解决你所遇到的关于字符串相对应的问题

字符函数


以下是本篇文章正文内容,下面案例可供参考

一、字符分类函数

在这里插入图片描述
这些函数都是放在一个头文件 ctype.h
在这里插入图片描述

这些函数运用都差不多
比如:islower字符函数
函数类型

int islower(int c)//这是islower的函数,(int c)实际上是传字符的ASCALL码值
返回值
在这里插入图片描述
如果输入的值不是小写字母的话就返回0
如果是小写字母的话就返回一个非0值

代码展示

int main()
{
	int ret = islower('a');
	printf("%d\n", ret);
	return 0;
}

在这里插入图片描述

字符函数练习

//写个代码,将字符串的小写字母转大写字母,其他字符不变.
int main()
{
	char arr[] = "I AM A student";
	 //           I AM A student\0
	int i = 0;
	while (arr[i] != '\0')
	{
		if (arr[i] >= 'a' && arr[i] <= 'z')
		{
			arr[i] -= 32;
		}

		i++;
	}
	printf("%s", arr);


	return 0;
}

通过所学的字符函数我们就可以进行替换
int main()
{
char arr[] = “I AM A student”;
// I AM A student\0
int i = 0;
while (arr[i]!=‘\0’)
{
if (islower(arr[i]))//在这里替换
{
arr[i] -= 32;
}
i++;
}
printf(“%s”, arr);
return 0;
}

总而言之:
这些字符函数都与islower用法相似,不是所要判断的内容就返回
0;否则就返回非0值

二、字符函数转换

1.引入库

C语言提供了2个字符转换函数:

  1. int tolower(int c);//将参数传进去的大写字母转小写
  2. int toupper(int c);//将参数传进去的小写字母转大写
int main()
{
	printf("%c\n",toupper('a'));
	printf("%c\n", tolower('A'));
	return 0;
}

在这里插入图片描述

通过字符转换
那么我们可以进一步的改良大写转小写的项目
int main()
{
char arr[] = “I AM A student”;
// I AM A student\0
int i = 0;
while (arr[i]!=‘\0’)
{
if (islower(arr[i]))
{
arr[i] =toupper(arr[i]);//在这里替换
}
i++;
}
printf(“%s”, arr);
return 0;
}

2.代码改进

通过字符转换
那么我们可以进一步的改良大写转小写的项目

代码如下(示例):

int main()
{
	char arr[] = "I AM A student";
	//           I AM A student\0
	int i = 0;
	while (arr[i]!='\0')
	{
		if (islower(arr[i]))
		{
			arr[i] =toupper(arr[i]);//在这里替换
		}
		i++;
	}
	printf("%s", arr);
	return 0;
}

字符串函数

1. 懂得怎么运用字符串函数
2. 深刻理解字符串函数的实现
3. 模拟字符串函数<一步一步的解析字符串函数>

strlen函数

strlen的详细内容在这里插入图片描述

  1. 返回值size_t

如图所示
int main()
{// 3 - 4
if (strlen(“abc”) - strlen(“abcdef”)>0)
{
printf(“>\n”);
}
else
{
printf(“<=\n”);
}
}
在这里插入图片描述
>因为这里的strlen返回值是size_t无符号数,
那么3-4=(无符号数)
所以结果是>0的值;返回>

  1. strlen模拟实现
    方式1:
//方式1:计数器
int count(char* arr1)
{
	int a = 0;
	int i = 0;
	while (arr1[i] != '\0')
	{
		i++;
		a++;
	}
	return a;
}

方式2:递归

int cwz(char* arr1)
{
assert(arr1);
if(*arr1=='\0')
{
return 0;
}
else
{
return 1+cwz(arr1+1);
}
}

方法3:指针

int cwz(char* arr1)
{
assert(arr1);
char* p=arr1;
while(*p!='\0')
{
p++;
}
return p-arr1;

strcpy

char* strcpy(chardestination,charsource )
1:strcpy函数的主要功能就是复印的作用
(1)strcpy返回的类型是char*,参数是指针。
2:参数
(1)我们要把源头的字符要打印到目的地
(2)条件一:而且目的地的(数组的容量要够大)
条件二:源头的数组最后不能没有‘\0’

如果没有程序会崩溃
在这里插入图片描述

3:模拟实现strcpy

void cwz(char* dest, const char* source)
{
	assert(dest);
	assert(source);
	while (*source != '\0')
	{
		*dest = *source;
		dest++;
		source++;
	}
	*dest = *source;
}

int main()
{
	char arr[] = "sfaskf";
	char arr1[30] = { 0 };
	cwz(arr1, arr);
	printf("%s", arr1);
}

在这里插入图片描述

结尾

字符串函数与字符函数(1)
到此结束喽!!!
我也会尽快更更新(2)ლ(′◉❥◉`ლ)敬请期待后续内容。