服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - C语言字符串函数介绍与模拟实现

C语言字符串函数介绍与模拟实现

2022-10-08 16:00诚挚的乔治 C/C++

字符串函数(String processing function)也叫字符串处理函数,指的是编程语言中用来进行字符串处理的函数,如C,pascal,Visual以及LotusScript中进行字符串拷贝,计算长度,字符查找等的函数

strlen

  strlen
头文件 #include <string.h>
格式 size_t strlen( const char* str)
功能 计算字符串长度
返回值 返回字符串的长度
?
1
2
3
4
5
6
7
8
9
10
11
12
13
//strlen的模拟实现
#include<stdio.h>
#include<assert.h>
size_t  my_strlen(const char* str)
{
    assert(str); int count = 0;
    while (*str != '\0')
    {
        str++;
        count++;
    }
    return count;
}

strcat

  strcat
头文件 #include <string.h>
格式 char* strcat(char* dest,const char* src)
功能 追加子字符串到目标字符串后
返回值 目标字符串的首地址
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//strcat模拟实现
#include<stdio.h>
#include<assert.h>
char* my_strcat(char* str1,const char *str2)
{
    assert(str1, str2);
    char* tmp = str1;
    //找出str1中的斜杠零
    while (*str1)
    {
        str1++;
    }
    //在str1上追加
    while (*str1++=*str2++)
    {
        ;
    }
    return tmp;
}
int main()
{
    char arr1[20] = "hello";
    char arr2[] = " world";
    printf("%s",my_strcat(arr1,arr2));
    return 0;
}

strcpy

  strcpy
头文件 #include <string.h>
格式 char* strcpy(char* dest,char* src)
功能 将参数src字符串拷贝至参数dest所指的地址
返回值 目标字符串的首地址
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//模拟实现strcpy
#include<stdio.h>
#include<assert.h>
char* my_strcpy(char *str2,char *str1)
{
    assert(str1, str2);
    char* tmp = str2;
    while (*str1)
    {
        *str2++ = *str1++;
    }
    return tmp;
}
int main()
{
    char arr1[20] = "abcdef";
    char arr2[20] = "xxxxxxxxxxxxx";
    my_strcpy(arr2,arr1);
    printf("%s", arr2);
    return 0;
}

strcmp

  strcmp
头文件 #include <string.h>
格式 int strcmp (const char* str1,const char* str2)
功能 比较两字符串的大小
返回值

str1>str2  返回值>0

str1<str2  返回值<0

str1=str2  返回值=0

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//strcmp模拟实现
#include<stdio.h>
#include<assert.h>
int strcmp(const char* str1,const char* str2)
{
    assert(str1, str2);
    while (*str1 == *str2)
    {
        str1++;
        str2++;
    }
    return *str1 - *str2;
    
}
int main()
{
    char arr1[] = "abc";
    char arr2[] = "abcd";
    printf("%d", strcmp(arr1, arr2));
    return 0;
}

strstr

  strstr
头文件 #include <string.h> 
格式 char* my_strstr(const char*str,const char* substr)
功能 在目标字符串中查找子字符串
返回值 目标字符串中,与子字符串相同的字符串首地址

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include<stdio.h>
#include<assert.h>
char* my_strstr(const char*str,const char* substr)
{
    char* s1 = str;//防止str被破坏
    char* s2 = substr;//防止substr被败坏
    char* cur = str;//存储中间地址
    assert(str && substr);
    //排除substr为空
    if (substr == '\0')
    {
        return str;
    }
    while (*cur)
    {
        s1 = cur;
        s2 = substr;
        while (*s1 && *s2 && *s1 == *s2)
        {
            s1++;
            s2++;
        }
        if (*s2 == '\0')
            return cur;
        cur++;
    }
    return NULL;
}
int main()//模拟实现strstr函数
{
    char arr1[] = "abbbcdef";
    char arr2[] = "bbc";
    printf("%s", my_strstr(arr1, arr2));
    return 0;
}

到此这篇关于C语言字符串函数介绍与模拟实现详解的文章就介绍到这了,更多相关C语言 字符串函数内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://z-ming.blog.csdn.net/article/details/122986054

延伸 · 阅读

精彩推荐
  • C/C++一篇文章带你了解C语言:入门基础

    一篇文章带你了解C语言:入门基础

    这篇文章主要介绍了C语言入门之基础知识详解,文中有非常详细的C语言使用教程及相关基础知识,对正在学习c语言的小伙伴们有非常好的帮助,需要的朋友可...

    AKA你的闺蜜9232021-12-10
  • C/C++C语言中extern详细用法解析

    C语言中extern详细用法解析

    这篇文章主要介绍了C语言中extern详细用法解析,本文讲解的extern也是C语言中的关键词,用来修饰函数声明或变量等,以下就是详细内容,需要的朋友可以参考下...

    weixin_4081995411462021-11-21
  • C/C++深入串的模式匹配算法(普通算法和KMP算法)的详解

    深入串的模式匹配算法(普通算法和KMP算法)的详解

    本篇文章是对串的模式匹配算法(普通算法和KMP算法)的应用进行了详细的分析介绍,需要的朋友参考下...

    C语言教程网4392020-12-11
  • C/C++浅谈使用C++多级指针存储海量qq号和密码

    浅谈使用C++多级指针存储海量qq号和密码

    这篇文章主要介绍了浅谈使用C++多级指针存储海量qq号和密码,分享了相关实例代码,具有一定借鉴价值,需要的朋友可以参考下...

    kwsy200810902021-06-18
  • C/C++C语言实现24点问题详解

    C语言实现24点问题详解

    24点问题就是在屏幕上输入1〜10范围内的4个整数(可以有重复),对它们进行加、减、乘、除四则运算后(可以任意的加括号限定计算的优先级),寻找计...

    小辉_Super5462022-08-01
  • C/C++vc++ 监控指定路径下文件变化实现代码

    vc++ 监控指定路径下文件变化实现代码

    这篇文章主要介绍了vc++ 监控指定路径下文件变化实现代码,需要的朋友可以参考下...

    guolongzheng11332021-07-26
  • C/C++如何把C++的源代码改写成C代码的方法

    如何把C++的源代码改写成C代码的方法

    这篇文章主要介绍了如何把C++的源代码改写成C代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...

    51CTO9282021-09-14
  • C/C++最新clion2020激活码附安装教程(亲测有效)

    最新clion2020激活码附安装教程(亲测有效)

    这篇文章主要介绍了最新clion2020激活码附安装教程(亲测有效),本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价...

    dd_Wendy5742021-10-07