c语言-string.h库函数初识

目录

  • 前言
  • 一、库函数strlen()
    • 1.1 strlen()介绍
    • 1.2 模拟实现strlen()
  • 二、库函数strcpy()
    • 2.1 strcpy()介绍
    • 2.2 模拟实现strcpy()
  • 三、库函数strcmp()
    • 3.1 strcmp()介绍
    • 3.3 模拟实现strcmp()
  • 总结


前言

本篇文章介绍c语言头文件中的库函数,包含strlen()、strcpy()、strcmp()


一、库函数strlen()

1.1 strlen()介绍

库函数strlen()是一个求c语言字符串长度的一个实现。下面是cplusplus网站关于这个库函数的介绍以及使用。
c语言-string.h库函数初识_第1张图片
作用:获取字符串长度
c语言字符串的长度由空字符决定计算是否终止,即\0。
c语言计算字符串长度的方法是从字符串第一个字符开始计算直到遇到空字符结束不包含空字符本身)。
返回值类型: size_t,size_t在C语言被定义为unsigned int
注意:不要将字符数组长度和字符串长度相混淆。例如

c语言-string.h库函数初识_第2张图片

1.2 模拟实现strlen()

通过模拟实现strlen(),可以加深对这个函数的理解,实现代码和测试截图如下:

#include
#include
//3.模拟实现strlen
int my_strlen(const char* str)
{
	assert(str != NULL);  //为真往下走,为假停止
	int count = 0;
	while (*str != '\0')
	{
		count++;
		str++;
	}
	return count;
}

测试截图:
c语言-string.h库函数初识_第3张图片


二、库函数strcpy()

2.1 strcpy()介绍

库函数strcpy()是一个c语言字符串拷贝的实现。下面是cplusplus网站关于这个库函数的介绍以及使用。
c语言-string.h库函数初识_第4张图片
作用:字符串拷贝
将指针source指向的字符串内容复制到destination指针指向的字符数组中(包括空字符\0)
注意:
为了避免溢出,destination指向的字符数组长度应该至少可以容纳source指向的字符串(包含\0)。
返回值类型: char*
返回值:destination
使用例子如下:
c语言-string.h库函数初识_第5张图片

2.2 模拟实现strcpy()

通过模拟实现strcpy(),可以加深对这个函数的理解,代码实现和测试截图如下:

//模拟实现strcpy
char* my_strcpy(char* destination, const char* source)
{
	assert(destination != NULL); //空指针判断
	assert(source != NULL);      //空指针判断
	char* destination_start = destination; //保存destinaiton的起始位置
	while((*destination++ = *source++) != '\0')
	{
		NULL;
	}
	return destination_start;
}

测试结果截图:

c语言-string.h库函数初识_第6张图片
问题:返回destination的目的是什么?
为了实现函数的链式调用

	int length = strlen(my_strcpy(destination, source));

三、库函数strcmp()

3.1 strcmp()介绍

库函数strcmp()是一个进行两个字符串比较的实现。下面是cplusplus网站关于这个库函数的介绍以及使用。
c语言-string.h库函数初识_第7张图片
作用:两个字符串比较
这个函数从两个字符串的第一个字符开始比较,如果当前比较的两个字符相等,则继续比较两个字符串的下一个字符,直到两个字符不同或者遇到了空字符
根据返回值的大小确定两个字符串的关系:

返回值 含义
<0 两个字符串第一个不相同的字符,str1指向的字符串的字符ASCII值小于str2
0 两个字符串的内容相同
>0 两个字符串第一个不相同的字符,str1指向的字符串的字符ASCII值大于str2

使用例子如下:
c语言-string.h库函数初识_第8张图片

3.3 模拟实现strcmp()

通过模拟实现strcmp(),可以加深对这个函数的理解,代码实现和测试截图如下:

int my_strcmp(const char* str1, const char* str2)
{
	assert((str1 != NULL) && (str2 != NULL)); //空指针判断

	while ((*str1 == *str2) && (*str1 != '\0'))
	{
		str1++;
		str2++;
	}
	return (*str1 - *str2);
}

测试结果截图:
c语言-string.h库函数初识_第9张图片


总结

本篇文章介绍了c语言头文件中的库函数,对strlen()、strcpy()、strcmp()三个函数进行介绍以及展示了如何使用它们,最后,为了加深对这三个函数的理解,分别模拟实现这三个函数。

你可能感兴趣的:(c语言基础,c语言)