小工具知识网

当前位置: 首页 > 行业知识 > C语言--strcmp函数,strcat函数,strcpy函数详解及实现

行业知识

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

2026-11-09 15:15:09 来源:互联网转载

目录

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#includeint 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#includeint my_strcmp(const char* str1, const char* str2){assert(str1 && str2);while (*str1 == *str2){if (*str1 == '

 1.3.3运行结果

'){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));}

2.strcat函数

2.1函数介绍

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

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

2.2函数使用 

2.2.1代码

#include#includeint 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实现思路

2.3.2代码

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

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

#includevoid MyStrcat(char* dst, const char* src){while (*dst != '

 2.3.3运行结果

'){++dst;}while (*dst = *src){++dst;++src;}*dst = '

3.strcpy函数

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

3.1函数介绍

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

3.2函数使用

3.2.1代码 

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

#include#includeint 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实现思路

3.3.2代码

#includevoid my_strcpy(char* dst, const char* src){while (*src){*dst = *src;++src;++dst;}*dst = '

 3.3.3运行结果

';}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;}

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

上一篇:怎么查看宝塔面板信息?

下一篇:第十四届蓝桥杯题解