封装函数分别实现string函数(strcpy,strcnpy,strlen,strcat,strncat)

1.首先分别介绍一下strcpy,strlen,strcat各自的功能:

1.strcpy

头文件 #include <string.h>

       char *strcpy(char *dest, const char *src);

功能:实现字符串复制

参数:dest:目标字符串首地址

src:原字符串首地址

返回值:目标字符串首地址

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

int main(int argc, char const *argv[])
{
    char s[32] = "nihaoshijie";
    char ch[32] = "hello";
    strcpy(s, ch);
    printf("%s\n", s); // hello
    return 0;
}

复制包括 \0


strncpy(strcpy的衍生)

       char *strncpy(char *dest, const char *src, size_t n);

功能:实现字符串的复制

参数:dest:目标字符串首地址

src:原字符串首地址

n:字符个数

返回值:目标字符串首地址

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

int main(int argc, char const *argv[])
{
    char s[32] = "nihao shijie";
    char ch[32] = "hello";
    strncpy(s, ch, 3);
    printf("%s\n", s);  // helao shijie
    return 0;
}


2.strlen

#include <string.h>

size_t strlen(const char *s);

功能:计算字符串的实际长度

参数:s:字符串的首地址

返回值:实际长度

3.strcat

#include <string.h>

       char *strcat(char *dest, const char *src);

功能:用于字符串拼接

参数:dest:目标字符串首地址

src:原字符串首地址

返回值:目标字符串首地址

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

int main(int argc, char const *argv[])
{
    char s[32] = "nihao shijie";
    char ch[32] = "hello";
    strcat(s, ch);
    printf("%s\n", s);  // nihao shijiehello
    return 0;
}

strncat

       char *strncat(char *dest, const char *src, size_t n);  拼接src前n个字符

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

int main(int argc, char const *argv[])
{
    char s[32] = "nihao shijie";
    char ch[32] = "hello";
    strncat(s, ch, 3);
    printf("%s\n", s);  // nihao shijiehel
    return 0;
}

2.代码 封装函数实现功能

1.strcpy

#include <stdio.h>
void mystrcpy(char *s1, char *s2)
{
    while (*s2 != '\0')
    {
        *s1 = *s2;//s1 s2互换;
        s1++;
        s2++;
    }
        *s1='\0';//此时s1已经指向s2的最末位,保证末位以后再无字符;当s2比s1长的时候没有垃圾字符
}

int main()
{
    char a[32] = "nihao shijie";
    char b[32] = "hello";
    mystrcpy(a, b);
    printf(" %s\n", a);
    return 0;
}

2.strlen

#include <stdio.h>
#define N 100
int mystrlen()
{
    char s[N] = {};
    printf("请输入字符串:   \n");
    scanf("%s", s);
    int i = 0;
    int k = 0;
    while (s[i] != '\0')
    {
        k++;
        i++;
    }
    return k;
}
int main(int argc, char const *argv[])
{
    printf("%d\n", mystrlen());
    return 0;
}

3.strcat

#include <stdio.h>
void mystrcat(char *p, char *q)
{
    while (*p != '\0')
    {
        p++;
    }
    while (*q != '\0')
    {
        *p++ = *q++;//将p的最后一个指针指向q的第一个地址
    }
}
int main(int argc, char const *argv[])
{
    char a[32] = "hello";
    char b[32] = "world";
    mystrcat(a, b);
    puts(a);
    return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值