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

目录


前言

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


一、库函数strlen()

1.1 strlen()介绍

库函数strlen()是一个求c语言字符串长度的一个实现。下面是cplusplus网站关于这个库函数的介绍以及使用。

作用:获取字符串长度
c语言字符串的长度由空字符决定计算是否终止,即\0。
c语言计算字符串长度的方法是从字符串第一个字符开始计算直到遇到空字符结束不包含空字符本身 )。

返回值类型: size_t,size_t在C语言被定义为unsigned int

注意:不要将字符数组长度和字符串长度相混淆。例如

1.2 模拟实现strlen()

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

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

测试截图:


二、库函数strcpy()

2.1 strcpy()介绍

库函数strcpy()是一个c语言字符串拷贝的实现。下面是cplusplus网站关于这个库函数的介绍以及使用。

作用:字符串拷贝
将指针source指向的字符串内容复制到destination指针指向的字符数组中(包括空字符\0)
注意:
为了避免溢出,destination指向的字符数组长度应该至少可以容纳source指向的字符串(包含\0)。
返回值类型: char *
返回值:destination

使用例子如下:

2.2 模拟实现strcpy()

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

c 复制代码
//模拟实现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;
}

测试结果截图:

问题:返回destination的目的是什么?
为了实现函数的链式调用

c 复制代码
	int length = strlen(my_strcpy(destination, source));

三、库函数strcmp()

3.1 strcmp()介绍

库函数strcmp()是一个进行两个字符串比较的实现。下面是cplusplus网站关于这个库函数的介绍以及使用。

作用:两个字符串比较
这个函数从两个字符串的第一个字符开始比较,如果当前比较的两个字符相等,则继续比较两个字符串的下一个字符,直到两个字符不同或者遇到了空字符

根据返回值的大小确定两个字符串的关系:

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

使用例子如下:

3.3 模拟实现strcmp()

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

c 复制代码
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>头文件中的库函数,对strlen()、strcpy()、strcmp()三个函数进行介绍以及展示了如何使用它们,最后,为了加深对这三个函数的理解,分别模拟实现这三个函数。

相关推荐
代码中介商8 小时前
C语言函数完全指南:从基础到实践
c语言·开发语言
hssfscv8 小时前
软件设计师下午试题四——C语言(N皇后问题、分治、动态规划)
c语言·算法·动态规划
爱编码的小八嘎8 小时前
C语言完美演绎8-7
c语言
幽灵诶11 小时前
理解指针2
c语言
boonya12 小时前
一文读懂MCP:AI连接万物的“USB-C接口”
c语言·开发语言·人工智能
yashuk13 小时前
C语言条件编译三种方式及第一种方式的格式、作用与示例
c语言·程序设计·条件编译·代码示例·预处理程序
qeen8713 小时前
【数据结构】栈及其C语言模拟实现
c语言·数据结构·学习·
我不是懒洋洋13 小时前
深入理解C语言指针:从一级指针到函数指针
c语言
熬夜敲代码的猫14 小时前
C/C++:内存管理
c语言·c++·动态内存管理
云泽80815 小时前
第十五届蓝桥杯大赛软件赛省赛C/C++大学B组
c语言·c++·算法·蓝桥杯