三个重要函数:strcmp函数,strcat函数,strcpy函数

目录

一、strcmp函数:

(1):函数介绍

(2):函数实现

二、strcat函数:

(1):函数介绍

(2):函数实现

三、strcpy函数:

(1):函数介绍

(2):函数实现


1.strcmp函数

(1):strcmp函数的介绍:

strcmp函数主要是用来比较两个字符串的大小的函数,官方来说就是调用来进行计算字符长度后再进行比较的一种函数。

标准规定:

第一个字符串大于第二个字符串,则返回大于0的数字;

第一个字符串等于第二个字符串,则返回0;

第一个字符串小于第二个字符串,则返回小于0的数字。

(2):strcmp函数的实现:

2.1:运行代码:

#include<stdio.h>
#include<string.h>
// 主函数
int main()
{
    // 定义四个字符指针,分别指向四个字符串常量
    char* p1 = "abcdefgh";
    char* p2 = "abcdefgh";
    char* p3 = "abcde";
    char* p4 = "bcdef";
    // 输出 p1 和 p2 比较的结果
    printf("%d\n", strcmp(p1, p2));
    // 输出 p1 和 p3 比较的结果
    printf("%d\n", strcmp(p1, p3));
    // 输出 p1 和 p4 比较的结果
    printf("%d\n", strcmp(p1, p4));
    // 主函数返回 0
    return 0;
}

2.2:实现思路:

函数接收的值只会用于比较,并不会被修改;因此要对函数进行传参要用const修饰函数;

strcmp是比较字符串中对应位置上的字符大小,如果相同则继续比对下一对;知道遇到'\0'。

2.3:实现的代码样例:

#include<stdio.h>
#include<assert.h>
// 自定义字符串比较函数
int my_strcmp(const char* str1, const char* str2)
{
    // 断言确保传入的字符串指针不为空
    assert(str1 && str2);
    // 逐个字符比较,直到找到不同的字符或到达字符串末尾
    while (*str1 == *str2)
    {
        // 如果当前字符为 '\0',表示两个字符串完全相同,返回 0
        if (*str1 == '\0')
        {
            return 0;
        }
        // 移动指针到下一个字符
        str1++;
        str2++;
    }
    // 返回两个字符串第一个不同字符的 ASCII 码差值
    return(*str1 - *str2);
}

int main()
{
    char* p1 = "abcdefgh";
    char* p2 = "abcdefgh";
    char* p3 = "abcc";
    char* p4 = "bcde";
    // 调用 my_strcmp 函数比较字符串 p1 和 p2,并打印结果
    printf("%d\n", my_strcmp(p1, p2));
    // 调用 my_strcmp 函数比较字符串 p1 和 p3,并打印结果
    printf("%d\n", my_strcmp(p1, p3));
    // 调用 my_strcmp 函数比较字符串 p3 和 p4,并打印结果
    printf("%d\n", my_strcmp(p3, p4));
}

2.strcat函数

(1)strcat函数的介绍:

strcat作用是追加拷贝,追加指追加到目标空间后面,且要求目标空间足够大,能容纳下源字符串的内容。

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

(2)strcat函数的实现:

2.1:运行代码:

#include<stdio.h>
#include<string.h>

int main()//定义主函数
{
    // 定义一个字符数组 p1,长度为 20,并初始化为 "yes or no"
    char p1[20] = "yes or no";
    // 定义一个指向常量字符的指针 p2,指向字符串 "no"
    const char* p2 = "no";
    // 调用自定义的字符串拼接函数 Mystrcat,将 p2 拼接到 p1 后面
    Mystrcat(p1, p2);
    // 打印拼接后的字符串 p1
    printf("%s\n", p1);
    // 主函数返回 0
    return 0;
}

2.2:strcat函数的实现思路:

strcat函数的目的在于让字符串dst的末尾加上src的开头;应该首先让dst指向'\0',让src从'0'开始复制给dst

2.3:strcat函数的实现代码:

#include<stdio.h>
void my_strcpy(char* dst, const char* src)// 定义一个自定义的字符串拷贝函数 
{
    // 当 src 指向的字符不为空时,执行循环
    while (*src)
    {
        // 将 src 指向的字符拷贝到 dst 指向的位置
        *dst = *src;
        // src 指针向后移动一位
        ++src;
        // dst 指针向后移动一位
        ++dst;
    }
    // 在拷贝结束后,将 dst 指向的字符设置为空字符,以表示字符串的结束
    *dst = '\0';
}

int main()
{
    // 定义一个字符数组 p1,并初始化为 "yes or no"
    char p1[] = "yes or no";
    // 定义一个指向常量字符的指针 p2,并初始化为 "yes"
    const char* p2 = "yes";

    // 打印 p1 的原始值
    printf("%s\n", p1);

    // 使用 my_strcpy 函数将 p2 指向的字符串拷贝到 p1 中
    my_strcpy(p1, p2);

    // 打印拷贝后的 p1 的值
    printf("%s\n", p1);

    // 主函数返回 0
    return 0;
}

3.strcpy函数:

(1):strcpy函数的介绍:

strcpy函数意思就是覆盖拷贝,将source全部拷贝到destination,甚至将'\0'也拷过去,且必须考虑destination的空间够不够。

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

(2)strcpy函数的实现:

2.1:运行代码:

#include<stdio.h>
// 主函数
int main()
{
    // 定义一个字符数组 p1 并初始化为 "yes or no"
    char p1[] = "yes or no";
    // 定义一个指向常量字符的指针 p2,初始化为 "yes"
    const char* p2 = "yes";
    // 打印 p1 的值
    printf("%s\n", p1);
    // 调用 my_strcpy 函数,将 p2 指向的字符串复制到 p1 中
    my_strcpy(p1, p2);
    // 打印 p1 的值,此时 p1 已经被修改为 "yes"
    printf("%s\n", p1);
    // 主函数返回 0
    return 0;
}

2.2:strcpy函数的实现思路:

strcpy函数的目的是将source覆盖拷贝到destination,那我们只要在开始时将source的值赋值给destination就行了,结束后只要在destination的位置上添上'0'就行了。

2.3:函数实现的代码:

#include<stdio.h>
/*
 * 函数功能:将源字符串src拼接到目标字符串dst后面
 * 参数:dst,目标字符串;src,源字符串
 * 返回值:无
 */
void MyStrcat(char*dst,const char*src)
{
    // 找到目标字符串的末尾
    while (*dst!= '\0')
    {
        ++dst;
        // 源字符串指针也向后移动
        ++src;
    }
    // 在目标字符串的末尾添加'\0',表示字符串结束
    *dst = '\0';
}

int main()
{
    // 定义一个字符数组p1,初始值为"yes or no"
    char p1[20] = "yes or no";
    // 定义一个指向常量字符的指针p2,初始值为"no"
    const char* p2 = "no";
    // 调用MyStrcat函数,将p2拼接到p1后面
    Mystrcat(p1,p2);
    // 输出拼接后的字符串
    printf("%s\n",p1);
    return 0 ;
}

总结:strcmp,strcat和strcpy这三个函数都是C语言中三种重要的函数,涉及地址转换,拷贝,字符串等多个知识点,需要重点掌握。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值