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

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

一、strcat

(1) 简介

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

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

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

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

(2)需要注意的点

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

(3)演示

#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函数

#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>

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)演示

#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函数

代码:

#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.***/

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

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

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

转载请说明出处内容投诉
CSS教程网 » 【C语言】strcat、strcmp字符串函数详解

发表评论

欢迎 访客 发表评论

一个令你着迷的主题!

查看演示 官网购买