C/C++常用字符串函数

一、字符串函数介绍:

字符串作为程序中常用的数据类型,学会对字符串进行处理是作为一名C/C++程序员的基本功,我们要学会使用相关函数,并且对重点函数要会自己手动实现(下文对重点函数有实现代码以及相关示例)

二、字符串函数详解

1.strlen:

作用:求字符串的大小

使用:

实现:

复制代码
size_t MyStrlen1(const char* str)
{
	assert(str!=nullptr);
	int len = 0;
	while (str[len] != '\0')
		len++;
	return len;
}

示例:

复制代码
int main()
{
	const char* str = "123456";
	printf("%d\n", strlen(str));
	printf("%d\n", MyStrlen1(str));
	return 0;
}

注意:strlen记录字符串函数大小,不包括'\0';

2.strcpy:

作用:将source字符串拷贝到destnation

使用:

实现:

复制代码
char* MyStrcpy(char* destination, const char* source)
{
	assert(destination != nullptr);
	assert(source != nullptr);
	int pos = 0;
	while (source[pos] != '\0')
	{
		destination[pos] = source[pos];
		pos++;
	}
	destination[pos] = '\0';
	return destination;
}

示例:

复制代码
int main()
{
	const char* str = "123456";
	char* str1 = (char*)malloc(strlen(str) + 1);
    printf("%s", strcpy(str1, str));
	printf("%s", MyStrcpy(str1, str));
	return 0;
}

3.strncpy:

作用:从source字符串拷贝指定长度到destnation字符串中

使用:

4.strcmp:

作用:字符串的比较

使用:

实现:

复制代码
int MyStrcmp(const char* dst, const char* src)
{
	int pos1 = 0,pos2=0;
	while (dst[pos1]==src[pos2]&&dst[pos1]!='\0')
	{
		pos1++;
		pos2++;
	}
	return dst[pos1] - src[pos2];
}

示例:

复制代码
int main()
{
	const char* str = "123456";
	const char* str1 = "123456";
	printf("%d\n", strcmp(str1, str));
	printf("%d", MyStrcmp(str1, str));
	return 0;
}

5.strncmp:

作用:指定长度的字符串比较

使用:

6.strcat:

作用:字符串的拼接

使用:

实现:

复制代码
char* MyStrcat(char* destination, const char* source)
{
	assert(destination != nullptr);
	assert(source != nullptr);
	size_t pos1 = MyStrlen1(destination);
	size_t pos2 = 0;
	while (source[pos2] != '\0')
		destination[pos1++] = source[pos2++];
	destination[pos1] = '\0';
	return destination;
}

示例:

复制代码
int main()
{
	char str[80];
	char str1[80];
	strcpy(str, "these ");
	MyStrcpy(str1, "these ");
	strcat(str, "strings ");
	MyStrcat(str1, "strings ");
	strcat(str, "are ");
	MyStrcat(str1, "are ");
	strcat(str, "concatenated.");
	MyStrcat(str1, "concatenated.");
	printf("%s\n", str);
	printf("%s\n", str1);
	return 0;
}

7.strncat:

作用:将source的指定长度字符串拼接到目标字符串末尾

使用:

8.strstr:

作用:查找子字符串在一个字符串的首次出现位置

使用:

实现:

复制代码
char* MyStrstr(char* dst, const char* src)
{
	assert(dst);
	assert(src);
	int pos1 = 0;
	while (dst[pos1]!='\0')
	{
		 int pos2 = 0;
		if (dst[pos1] == src[pos2])
		{
			int pos = pos1;
			while (dst[pos] == src[pos2])
			{
				pos++;
				pos2++;
			}
			if (src[pos2] == '\0')
				return dst + pos1;
		}
		pos1++;
	}
	return dst;
}

示例:

复制代码
int main()
{
	char str[] = "This is a simple string";
	char str1[] = "This is a simple string";
	char* pch;
	char* pch1;
	pch = strstr(str, "simple");
	pch1 = MyStrstr(str1, "simple");
	if (pch != NULL)
		strncpy(pch, "sample", 6);
	if(pch1!=nullptr)
		strncpy(pch1, "sample", 6);
	printf("%s\n", pch);
	printf("%s", pch1);
	return 0;
}

9.strtok:

作用:将字符串按照指定的分割符切割成多个子串

使用:

示例:

复制代码
int main()
{
	char str[] = "- This, a sample string.";
	char* pch;
	printf("Splitting string \"%s\" into tokens:\n", str);
	pch = strtok(str, " ,.-");
	while (pch != NULL)
	{
		printf("%s\n", pch);
		pch = strtok(NULL, " ,.-");
	}
	return 0;
}

三、总结:

学会使用常见字符串的函数,处理好字符串等各种问题,对我们在项目工程等方面有非常重要的基础作用,例如解决算法问题、网络协议的制定、C++string类实现等等,当然本篇文章只讲述了常用的字符串函数,对于其他函数,有兴趣的朋友们可以看一下如下网址:<cstring> (string.h) - C++ Reference

还有一个简单的思维导图,方便大家复习巩固

结语:

以上就是我分享的字符串函数的全部内容了,希望对大家有些帮助,也希望与一样喜欢编程的朋友们共进步

谢谢观看

如果觉得还阔以的话,三连一下,以后会持续更新的,我会加油的

祝大家早安午安晚安

相关推荐
天赐学c语言3 分钟前
12.18 - 有效的括号 && C语言中static的作用
数据结构·c++·算法·leecode
2401_876221348 分钟前
数据结构-绪论
数据结构
季远迩9 分钟前
LeetCode 热题 100 Python3易懂题解(更新中)
算法·leetcode·哈希算法
CoovallyAIHub10 分钟前
从“模仿”到“进化”!华科&小米开源MindDrive:在线强化学习重塑「语言-动作」闭环驾驶
深度学习·算法·计算机视觉
别动哪条鱼11 分钟前
SDL 函数对各对象缓冲区的影响
网络·数据结构·ffmpeg
xie_pin_an22 分钟前
C 语言排序算法全解析:从原理到实战,附性能对比
c语言·算法·排序算法
CoovallyAIHub24 分钟前
SAM 真的开始「分割一切」,从图像到声音,Meta 开源 SAM Audio
深度学习·算法·计算机视觉
Dream it possible!27 分钟前
LeetCode 面试经典 150_回溯_组合(99_77_C++_中等)
c++·leetcode·面试·回溯
三斗米27 分钟前
从思维链到思维树:一步步解锁大语言模型的推理能力
算法
jianfeng_zhu39 分钟前
添加逗号问题
数据结构