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

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

服务器之家 - 编程语言 - C/C++ - C语言字符串函数入门

C语言字符串函数入门

2022-08-07 12:05build小春宝 C/C++

这篇文章主要为大家介绍了C语言字符串函数,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助

实现字符串库函数功能

有些时候我们可能会被限制无法使用库函数,这个时候我们需要编写自己的库函数。但了解了字符串库函数的功能之后,想要实现并不困难,今天我们用数组和循环来简单实现几个字符串库函数的功能。

1.strlen函数

strlen函数使用来求字符串长度的,遇到\0就会停止,并返回字符串的长度,接下来根据这个特性来编写一下我们自己的strlen

?
1
2
3
4
5
6
7
int my_strlen(char string[]) {
    int count= 0;
    while (string[count] != NULL) {       
        count++;
    }
    return count;
}//也可以将while的判断条件改为string[count]

有些小伙伴应该知道递归的实现,但是这里涉及了指针的内容,我就不教大家实现了

2.strcmp函数

strcmp字符串比较函数,对两个字符串进行比较,相当返回0,前一个字符串大于后一个字符串会返回大于0的数,小于则返回小于0的数,至于具体返回多少,则需要看编译器。

在实现strcmp功能之前,我们需要了解它的机制,strcmp是一个字符一个字符的比较ASCII值的

?
1
2
3
4
5
6
7
int  my_strcmp(char string1[], char string2[]) {
    int i = 0;
       //当两个字符串都没有达到末端时,继续比较
    while ((string1[i] == string2[i]) && string1[i] && string2[i])
        i++;
    return string1[i] - string2[i]; //当两个字符串指向的字符不一样或者到达终点时返回差值
}

一个简单的while循环就能达到目的

3.strcpy函数

字符串拷贝函数,将后一个字符串拷贝到前一个字符串中,我们需要保证目的地足够大

?
1
2
3
4
5
6
7
8
9
10
11
void my_strcpy(char string1[50], char string2[]) {
    int i = 0;
    while (string1[i++] = string2[i++]);
}
//这里利用了赋值表达式的特性,直接进行赋值,当string[i]为\0时赋值完循环自动停止
//当然这个程序并不是完美的,根据strcpy的返回值我们还可以这样修改
char* my_strcpy(char string1[50], char string2[]) {
        int i = 0;
        while (string1[i++] = string2[i++]);
        return string1;
}//返回目的地的起始地址

4.strcat函数

strcat字符串追加,在一个字符串之后追加一个新的字符串,如果以strcpy的角度理解就是以第一个字符串的\0位置为起始地址进行字符串拷贝,那么接下来就很简单了

?
1
2
3
4
5
6
7
char* my_strcat(char string1[50], char string2[]) {
    int i = -1;
    while (string1[++i]);//循环停止时i指向\0
    int j = 0;
    while (string1[i++] = string2[j++]); //与strcpy同理
    return string1;
}

5.strupr函数

strupr字符串大写函数,将所有字符串中的小写字母都变成大写,我们只需要根据ASCII值就可以简单实现

?
1
2
3
4
5
6
7
8
9
char*my_strupr(char string[]) {
    int i = 0;
    while (string[i]) {       //当string[i]指向\0时循环停止
        if (string[i] >= 'a' && string[i] <= 'z')
        string[i] -= 32;
        i++;
    }
    return string;
}

6.strlwr函数

和strupr对应,这是字符串小写函数,把大写转成小写,只需要对上面的代码简单一改就可以

?
1
2
3
4
5
6
7
8
9
char*my_strlwr(char string[]) {
    int i = 0;
    while (string[i]) {       //当string[i]指向\0时循环停止
        if (string[i] >= 'A' && string[i] <= 'Z')
        string[i] += 32;
        i++;
    }
    return string;
}

总结

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

原文链接:https://blog.csdn.net/weixin_62753802/article/details/122269533

延伸 · 阅读

精彩推荐
  • C/C++C++11 学习笔记之std::function和bind绑定器

    C++11 学习笔记之std::function和bind绑定器

    这篇文章主要介绍了C++11 学习笔记之std::function和bind绑定器,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参...

    tycoon37312021-12-07
  • C/C++C语言实现单词小帮手

    C语言实现单词小帮手

    这篇文章主要为大家详细介绍了C语言实现单词小帮手,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    坤sama11072021-08-04
  • C/C++基于C语言实现的aes256加密算法示例

    基于C语言实现的aes256加密算法示例

    这篇文章主要介绍了基于C语言实现的aes256加密算法,结合具体实例形式详细分析了C语言实现的aes256加密算法实现步骤与使用技巧,需要的朋友可以参考下...

    酷云6052021-05-03
  • C/C++C++函数参数取默认值的深入详解

    C++函数参数取默认值的深入详解

    本篇文章是对C++中函数参数取默认值进行了详细的分析介绍,需要的朋友参考下...

    C++教程网4442020-12-14
  • C/C++Qt实现可拖动按钮

    Qt实现可拖动按钮

    这篇文章主要为大家详细介绍了Qt实现可拖动按钮,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    BIG_C_GOD10512021-09-24
  • C/C++C语言计算日期差的方法示例

    C语言计算日期差的方法示例

    这篇文章主要介绍了C语言计算日期差的方法,结合具体实例形式分析了C语言针对日期转换、运算等相关操作技巧,需要的朋友可以参考下...

    YY''s12042021-05-18
  • C/C++C/C++ 实现递归和栈逆序字符串的实例

    C/C++ 实现递归和栈逆序字符串的实例

    这篇文章主要介绍了C/C++ 实现递归和栈逆序字符串的实例的相关资料,这里提供实例代码帮助大家学习掌握,需要的朋友可以参考下...

    roycehe9032021-05-28
  • C/C++有关C++中随机函数rand() 和srand() 的用法详解

    有关C++中随机函数rand() 和srand() 的用法详解

    下面小编就为大家带来一篇有关C++中随机函数rand() 和srand() 的用法详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看...

    C++教程网9032021-04-27