【C语言进阶:刨根究底内存操作函数】memcmp memset 字符分类和字符转换函数

时间:2021-02-22 01:20:01

本节重点内容:

  • 深入理解 memcmp 函数的使用
  • 深入理解 memset 函数的使用
  • 深入理解字符分类函数的使用
  • 深入理解字符转换函数的使用

⚡memcmp

【C语言进阶:刨根究底内存操作函数】memcmp memset 字符分类和字符转换函数

  •  比较从ptr1和ptr2指针开始的num个字节。
  • 返回值如下:

【C语言进阶:刨根究底内存操作函数】memcmp memset 字符分类和字符转换函数

memcmp函数的基本使用: 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<string.h>

int main()
{
	int arr1[] = { 1,2,3,4,6 };
	int arr2[] = { 1,2,3,4,7 };
	printf("%d\n", memcmp(arr1, arr2, 16));
	printf("%d\n", memcmp(arr1, arr2, 17));
	return 0;
}

运行结果如下:

【C语言进阶:刨根究底内存操作函数】memcmp memset 字符分类和字符转换函数


⚡memset

【C语言进阶:刨根究底内存操作函数】memcmp memset 字符分类和字符转换函数

  •  memset是以字节为单位来进行设置,使用时要注意。

memset函数的基本使用:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<string.h>

int main()
{
	char arr[] = "hello world";
	memset(arr, 'x', 6);
	printf("%s\n", arr);
	return 0;
}

运行结果如下:

【C语言进阶:刨根究底内存操作函数】memcmp memset 字符分类和字符转换函数


⚡字符分类函数

函数 如果他的参数符合下列条件就返回真
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 任何可打印字符,包括图形字符和空白字符

以上函数在使用时应引用头文件 <ctype.h> 。

举几个函数使用的例子:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<ctype.h>

int main()
{
	printf("%d\n", isdigit('x'));
	printf("%d\n", isdigit('6'));
	printf("%d\n", isspace('x'));
	printf("%d\n", isspace(' '));
	printf("%d\n", islower('x'));
	printf("%d\n", islower('X'));
	return 0;
}

运行结果如下:

【C语言进阶:刨根究底内存操作函数】memcmp memset 字符分类和字符转换函数


⚡字符转换函数

【C语言进阶:刨根究底内存操作函数】memcmp memset 字符分类和字符转换函数

  •  经过实验貌似这两个函数只能对单个字符进行大小写转换。

函数使用示例如下:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<ctype.h>

int main()
{
	printf("%c\n", tolower('X'));
	printf("%c\n", toupper('x'));
	return 0;
}

运行结果如下:

【C语言进阶:刨根究底内存操作函数】memcmp memset 字符分类和字符转换函数


写出一个代码将一句话转换为全小写输出:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<ctype.h>

int main()
{
	char arr[20] = { 0 };
	gets(arr); //接收字符串
	int i = 0;
	while (arr[i])
	{
		if (isupper(arr[i]))
		{
			arr[i] = tolower(arr[i]);
		}
		printf("%c", arr[i]);
		i++;
	}
	return 0;
}

运行结果如下:

【C语言进阶:刨根究底内存操作函数】memcmp memset 字符分类和字符转换函数


感谢大家能够看完这篇博客,创作时长,小伙伴们觉得我的博客对你有帮助,不妨留下你的点赞的收藏,关注我,带你了解不一样的C语言。

【C语言进阶:刨根究底内存操作函数】memcmp memset 字符分类和字符转换函数