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运行结果

扫描二维码关注公众号,回复: 17251779 查看本文章

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函数是用来比较两个字符串大小的函数,需要引用头文件<string.h>。

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

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

1.2函数使用

1.2.1代码

#include<stdio.h>
#include<string.h>
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运行结果

1.3模拟实现strcmp

1.3.1实现思路

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

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

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

1.3.2代码

#include<stdio.h>
#include<assert.h>
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运行结果

2.strcat函数

2.1函数介绍

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

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

2.2函数使用 

2.2.1代码

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

2.2.2运行结果

2.3模拟实现strcat

2.3.1实现思路

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

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

2.3.2代码

#include<stdio.h>
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运行结果

3.strcpy函数

3.1函数介绍

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

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

3.2函数使用

3.2.1代码 

#include<stdio.h>
#include<string.h>
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运行结果

3.3函数模拟实现strcpy

3.3.1实现思路

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

3.3.2代码

#include<stdio.h>
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运行结果

猜你喜欢

转载自blog.csdn.net/2301_76618602/article/details/133135992
今日推荐