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

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

服务器之家 - 编程语言 - C/C++ - 一起来了解c语言的str函数

一起来了解c语言的str函数

2022-09-22 15:41roseisbule C/C++

这篇文章主要为大家详细介绍了c语言的str函数,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助

strlen:

用于求字符串长度,从首字符开始,到'\0'结束,'\0'不计入总长度。

函数实现:

?
1
2
3
4
5
6
7
size_t my_strlen(const char* ptr)
{
    assert(ptr);
    const char* ptx = ptr;
    while (*(++ptx));
    return (size_t)(ptx - ptr);
}

strcmp:

用于比较两个字符串大小,注意大小并不是指字符串长度,而是从第一个字符开始比较,比较字符的大小。该函数返回的是一个int值,不同编译器,返回的值是不一样。但是正负是一致的,当第一个大于第二个,返回正值,小于则返回负值,相等返回0。

函数实现:

?
1
2
3
4
5
6
int my_strcmp(const char* str1,const char* str2)
{
    assert(str1 && str2);
    while((!(*str1 - *str2)) && ((*(str1++)) * (*(str2++))));
    return (int)(*str1 - *str2);
}

strcpy:

用于复制字符串。

函数实现:

?
1
2
3
4
5
6
7
char* my_strcpy(char* dest,const char* source)
{
    assert(dest && source);
    char* result = dest;
    while (*(dest++) = *(source++));
    return result;
}

strcat:

用于在目标字符串末尾追加一个字符串。

函数实现:

?
1
2
3
4
5
6
7
8
9
char* my_strcat(char* a, const char* b)
{
    assert(a && b);
    char* tmp = a;
    while (*(++a));
    while (*(a++) = *(b++));
    *a = '\0';
    return tmp;
}

strstr:

用于在一个字符串内寻找另一个字符串。这于KMP算法有关。

函数实现:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
const char* my_strstr(const char* a, const char* b)//a为长字符串 b为短字符串
{
    char* cp = (char*)a;
    char* s1;
    char* s2;
    if (!*b)
        return a;
    while (*cp)
    {
        s1 = cp;
        s2 = (char*)b;
        while (*s1 && *s2 && !(*s1 - *s2))
        {
            s1++;
            s2++;
        }
        if (!*s2)
            return cp;
        cp++;
    }
    return NULL;
}

atoi:

这个函数很有意思,它会把字符串的数字串转化为int值。

函数实现:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int my_atoi(const char* str)
{
    assert(str);
    int num = 0;
    int result = 0;
    const char* tmp = str;
    while (*str && *str != '.')
    {
        num++;
        str++;
    }
    while (num--)
    {
        result += (*tmp - '0') * (int)pow(10, num);
        tmp++;
    }
    return result;
}

strncpystrncmpstrncat

三个函数都是限制了字符个数,功能是一样的。

函数实现:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
char* my_strncpy(char* dest, const char* sou, size_t num)
{
    assert(dest && sou);
    char* tmp = dest;
    while ((num--) && (*(dest++) = *(sou++)));
    return tmp;
}
char* my_strncat(char* a, const char* b, int n)
{
    assert(a && b);
    char* tmp = a;
    while (*(++a));
    while ((n--) && (*(a++) = *(b++)));
    *a = '\0';
    return tmp;
}
int my_strncmp(const char* str1, const char* str2,int n)
{
    assert(str1 && str2);
    while ((!(*str1 - *str2)) && ((*(str1++)) * (*(str2++))) && (n--));
    return (int)(*str1 - *str2);
}

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注服务器之家的更多内容! 

原文链接:https://blog.csdn.net/roseisbule/article/details/122916028

延伸 · 阅读

精彩推荐
  • C/C++C语言实现奇数阶魔方阵的方法

    C语言实现奇数阶魔方阵的方法

    这篇文章主要介绍了C语言实现奇数阶魔方阵的方法,涉及数组及相关数学函数的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下...

    C语言教程网4422021-02-22
  • C/C++C++位图的实现原理与方法

    C++位图的实现原理与方法

    位图(bitset)是一种常用的数据结构,常用在给一个很大范围的数,判断其中的一个数是不是在其中。这篇文章主要给大家介绍了关于C++位图以及位图的实...

    WhiteShirtI5082021-11-11
  • C/C++C++字符串输入缓冲区机制详解

    C++字符串输入缓冲区机制详解

    缓冲区是用来存放流中的数据,本文详细的介绍了C++字符串输入缓冲区机制,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助...

    srymakerTT3432022-02-16
  • C/C++C++开发:为什么多线程读写shared_ptr要加锁的详细介绍

    C++开发:为什么多线程读写shared_ptr要加锁的详细介绍

    本篇文章介绍了,在C++中为什么多线程读写shared_ptr要加锁的详细说明。需要的朋友参考下...

    C++教程网5252020-11-22
  • C/C++如何用C语言去除字符串两边的空字符

    如何用C语言去除字符串两边的空字符

    本篇文章是对用C语言去除字符串两边空字符的方法进行了详细的分析介绍,需要的朋友参考下 ...

    C语言中文网2792020-12-09
  • C/C++C语言利用栈实现对后缀表达式的求解

    C语言利用栈实现对后缀表达式的求解

    这篇文章主要为大家详细介绍了C语言利用栈实现对后缀表达式的求解,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一...

    苍之羽5062021-09-02
  • C/C++C++ vector如何动态申请内存的元素

    C++ vector如何动态申请内存的元素

    vector是一种动态数组,本文主要介绍了C++ vector如何动态申请内存的元素,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以...

    谁吃薄荷糖7572021-12-03
  • C/C++C++实现LeetCode(86.划分链表)

    C++实现LeetCode(86.划分链表)

    这篇文章主要介绍了C++实现LeetCode(86.划分链表),本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下...

    Grandyang7272021-11-30