C语言--strcmp函数,strcat函数,strcpy函数详解及实现

目录

1.strcmp函数

1.1函数介绍

1.2函数使用

1.2.1代码

1.2.2运行结果

1.3模拟实现strcmp

1.3.1实现思路

1.3.2代码

 1.3.3运行结果

2.strcat函数

2.1函数介绍

2.2函数使用 

2.2.1代码

2.2.2运行结果

2.3模拟实现strcat

2.3.1实现思路

2.3.2代码

 2.3.3运行结果

3.strcpy函数

3.1函数介绍

3.2函数使用

3.2.1代码 

3.2.2运行结果

3.3函数模拟实现strcpy

3.3.1实现思路

3.3.2代码

 3.3.3运行结果


1.strcmp函数

1.1函数介绍

strcmp函数是用来比较两个字符串大小的函数,需要引用头文件

int strcmp ( const char * str1, const char * str2 );

strcmp比较两个字符串的大小,一个字符一个字符比较,按ASCLL码比较
标准规定:
第一个字符串大于第二个字符串,则返回大于0的数字
第一个字符串等于第二个字符串,则返回0
第一个字符串小于第二个字符串,则返回小于0的数字

1.2函数使用

1.2.1代码

#include
#include
int main()
{
	char* p1 = "abcdefgh";
	char* p2 = "abcdefgh";
	char* p3 = "abcde";
	char* p4 = "bcdef";
	printf("%d\n", strcmp(p1, p2));
	printf("%d\n", strcmp(p1, p3));
	printf("%d\n", strcmp(p3, p4));
}

1.2.2运行结果

C语言--strcmp函数,strcat函数,strcpy函数详解及实现_第1张图片

1.3模拟实现strcmp

1.3.1实现思路

1.函数所接收的值只用于比较,不能被修改,因此要对参数进行const修饰,由于传入参数都不能为空,因此可以加用断言。

 2. strcmp是比较字符串中对应位置上的字符大小(ASC II码值大小),如果相同,就比较下一对,直到不同或者都遇到'\0'。

3.若str1和str2解引用后不相等,则返回*str1-*str2。

1.3.2代码

#include
#include
int my_strcmp(const char* str1, const char* str2)
{
	assert(str1 && str2);
	while (*str1 == *str2)
	{
		if (*str1 == '\0')
		{
			return 0;
		}
		str1++;
		str2++;
	}
	return(*str1 - *str2);
}
int main()
{
	char* p1 = "abcdefgh";
	char* p2 = "abcdefgh";
	char* p3 = "abcc";
	char* p4 = "bcde";
	printf("%d\n", my_strcmp(p1, p2));
	printf("%d\n", my_strcmp(p1, p3));
	printf("%d\n", my_strcmp(p3, p4));
}

 1.3.3运行结果

C语言--strcmp函数,strcat函数,strcpy函数详解及实现_第2张图片

2.strcat函数

2.1函数介绍

strcat追加拷贝,追加到目标空间后面,目标空间必须足够大,能容纳下源字符串的内容。

char * strcat ( char * destination, const char * source );

2.2函数使用 

2.2.1代码

#include
#include
int main()
{
	char str1[20] = "yes or";
	const char* str2 = " on";
	strcat(str1, str2);
	printf("%s\n", str1);
	return 0;
}

2.2.2运行结果

C语言--strcmp函数,strcat函数,strcpy函数详解及实现_第3张图片

2.3模拟实现strcat

2.3.1实现思路

1.目的在字符串dst的末尾接上src的开头。

2.因此首先让dst指向'\0',让src从'\0'开始赋值给dst

2.3.2代码

#include
void MyStrcat(char* dst, const char* src)
{

	while (*dst != '\0')
	{
		++dst;
	}

	while (*dst = *src)
	{
		++dst;
		++src;
	}
	*dst = '\0';
}
int main()
{
	char p1[20] = "yes or";
	const char* p2 = " no";
	MyStrcat(p1, p2);
	printf("%s\n", p1);
	return 0;
}

 2.3.3运行结果

C语言--strcmp函数,strcat函数,strcpy函数详解及实现_第4张图片

3.strcpy函数

3.1函数介绍

strcpy是覆盖拷贝,将source全覆盖拷贝到destination,会把’\0’也拷过去,且必须考虑destination的空间够不够(destination的空间必须>=source的空间)

char * strcpy ( char * destination, const char * source );

3.2函数使用

3.2.1代码 

#include
#include
int main()
{
	char p1[] = "yes or no";
	char* p2 = "yes";
	printf("%s\n", p1);
	strcpy(p1, p2);
	printf("%s\n", p1);
	return 0;
}

3.2.2运行结果

C语言--strcmp函数,strcat函数,strcpy函数详解及实现_第5张图片

3.3函数模拟实现strcpy

3.3.1实现思路

我们目的是将source覆盖拷贝到destination,那么我们可以从头开始将source的值,赋给destination,赋值结束后只需要给destination后一个位置加上'\0'就完成了。

3.3.2代码

#include
void my_strcpy(char* dst, const char* src)
{
	while (*src)
	{
		*dst = *src;
		++src;
		++dst;
	}
	*dst = '\0';
}
int main()
{
	char p1[] = "yes or no";
	const char* p2 = "yes";
	printf("%s\n", p1);
	my_strcpy(p1, p2);
	printf("%s\n", p1);
	return 0;
}

 3.3.3运行结果

C语言--strcmp函数,strcat函数,strcpy函数详解及实现_第6张图片

你可能感兴趣的:(C语言学习详解,c语言,开发语言)