首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【C语言】strcat、strcmp字符串函数详解

【C语言】strcat、strcmp字符串函数详解

作者头像
zore
发布2025-12-30 18:46:32
发布2025-12-30 18:46:32
620
举报
文章被收录于专栏:C/C++ 专栏C/C++ 专栏

一、strcat

(1) 简介

strcat 是 C 语言标准库中的一个函数 用于连接两个字符串 头文件<string.h>

代码语言:javascript
复制
char * strcat ( char * destination, const char * source );

这个函数将字符串 sour 添加到目标字符串dest 的末尾,包括终止的空字符(’\0’)

目标字符串的 ’ \0 ’ 被源字符串的第一个字符覆盖, 而两者连接形成的新字符串末尾包含一个空字符。

(2)需要注意的点

且注意: 1.目标字符和源字符串串要有 ’ \0 ‘ (分别作为起点和终点) 2.目标空间足够大,若dest空间不足,会直接导致缓冲区溢出 3.目标空间要可修改 4.不可自己追加自己

(3)演示

代码语言:javascript
复制
#include <stdio.h>
#include <string.h>
int main() 
{
    char arr1[20] = "Hello "; 
    // 要确保这个数组足够大
    // 能够存放拼接后的字符串
    char arr2[] = "World!";

    strcat(arr1, arr2);
    //将arr2拼接在arr1上
    printf("%s\n\n", arr1);

    return 0;
}

运行结果:

在这里插入图片描述
在这里插入图片描述

(4)模拟实现strcat函数

代码语言:javascript
复制
#include <stdio.h>

void my_strcat(char* dist, const char* sour)
{
    while (*dist!='\0')
        //从0开始追加
    {
       dist++;
    }
    while (*dist++ = *sour++)
        //追加
    {
        ;
        //空语句
    }
}

int main() 
{
    char arr1[20] = "Hello "; 
    // 要确保这个数组足够大
    // 能够存放拼接后的字符串
    char arr2[] = "World!";

    my_strcat(arr1, arr2);
    //将arr2拼接在arr1上
    printf("%s\n\n", arr1);

    return 0;
}

运行结果:

在这里插入图片描述
在这里插入图片描述

二、strcmp

(1) 简介

strcmp函数是C语言中的字符串比较函数 用于比较两个字符串的大小 头文件<string.h>

代码语言:javascript
复制
int strcmp ( const char * str1, const char * str2 );

(2)strcmp大小比较方法

那么,strcmp该如何比较两字符串大小呢?

strcmp比较大小并不是比谁字符串长 而是一一比较对应位置的ASCLL值大小 一位一位的比较,直到决出大小

例如: “abe" 和 ”abcdefgh"相比,虽然后者更长 但是前者的第三位 ”e" > 后者的第三位 “c" 故 ”abc" 更大

(3)返回值

返回一个整数值,表示字符串之间的关系:

在这里插入图片描述
在这里插入图片描述

1.若str1小于str2,则返回负整数,即小于0的数。 2.若str1和str2相等,则返回0。 3.若str1大于str2,则返回正整数,即大于0的数。

(4)演示

代码语言:javascript
复制
#include <stdio.h>
#include <string.h>
 
int main()
{
	char str1[] = "abc";
	char str2[] = "abcdef";
 
	int ret = strcmp(str1, str2);
	if (ret == 0)
		printf("str1=str2\n\n");
	else if (ret > 0)
		printf("str1>str2\n\n");
	else
		printf("str1<str2\n\n");
		
	return 0;
}

运行结果:

在这里插入图片描述
在这里插入图片描述

(5)模拟实现strcmp函数

代码:

代码语言:javascript
复制
#include <stdio.h>

int my_strcmp(const char* str1, const char* str2)
{
	while (*str1 == *str2)
	{
		if (*str1 == '\0')
			return 0;
		str1++;
		str2++;
	}
	return (*str1 - *str2);
}

int main()
{
	char str1[] = "abe";
	char str2[] = "abcdefgh";

	int ret = my_strcmp(str1, str2);
	if (ret == 0)
		printf("str1=str2\n\n");
	else if (ret > 0)
		printf("str1>str2\n\n");
	else
		printf("str1<str2\n\n");

	return 0;
}

运行结果:

在这里插入图片描述
在这里插入图片描述

三、结语

本期资料来自于 https://legacy.cplusplus.com/

本文有若有不足之处,希望各位兄弟们能给出宝贵的意见。谢谢大家!!!

新人,希望各位兄弟们能动动小手,三连走一走!!!支持一下(三连必回)

下一期我们讲解strncat、strcnmp、strncpy字符串函数!!!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-12-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、strcat
    • (1) 简介
    • (2)需要注意的点
    • (3)演示
    • (4)模拟实现strcat函数
  • 二、strcmp
    • (1) 简介
    • (2)strcmp大小比较方法
    • (3)返回值
    • (4)演示
    • (5)模拟实现strcmp函数
  • 三、结语
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档