【C/C++】字符/字符串函数(2)——由string.h提供

零.导言

上次,我讲解了strlen strcpy strcat strcmp函数今天我将继续讲解字符/字符串函数中的

strncpy strncat strncmp函数。


一.strncpy

strncpy函数和strcpy函数类似,都是用来复制(copy)字符串的函数,区别在于它只会复制前num个字符,num由自己决定,使用方式如下图代码所示:

cpp 复制代码
int main() 
{
    char str[7] = "asdghj";
    char tmp[7] = { 0 };
    strncpy(tmp, str, 3);
    printf("%s", tmp);
    return 0;
}

运行结果:

当 num 大于 tmp 元素个数时:

内存越界了,于是报错。

当 num 大于 str 元素个数时:

会在目标后追加'\0', 直到总元素数等于num。


二.strncat

strncat函数和strcat函数类似,都是用来拼接字符串的函数,区别在于它只会拼接前num个字符,num由自己确认,使用方式如下图代码所示:

cpp 复制代码
int main() 
{
    char str[20] = "foufou";
    char tmp[20] = "ALICE";
    strncat(tmp, str, 3);
    printf("%s", tmp);
    return 0;
}

运行结果:

可以看到确实只把 str 的前3为字符拼接到了 tmp 上,并且是在 tmp 的 '\0' 处进行拼接,并在最后加上 '\0' 。

当 num 大于 str 元素个数时:

和 strncpy 不同,strncat 确实不会在目标后面****追加'\0',和 num 等于 str 元素个数的情况没有区别。


三.strncmp

strncmp函数和strcmp函数类似,都是用来比较字符串的函数,区别在于它只会比较前num个字符,num由自己确认,使用方式如下图代码所示:

cpp 复制代码
int main()
{
    char str[20] = "foufou";
    char tmp[6] = "ALICE";
    int ret = strncmp(tmp, str,3);
    printf("%d", ret);
    return 0;
}

验证:

此处就只比较了前3个字符。


四.相关链接

【C/C++】字符/字符串函数(1)------由string.h提供-CSDN博客


相关推荐
东风吹柳1 分钟前
观察者模式(sigslot in C++)
c++·观察者模式·信号槽·sigslot
嵌入式科普7 分钟前
十一、从0开始卷出一个新项目之瑞萨RA6M5串口DTC接收不定长
c语言·stm32·cubeide·e2studio·ra6m5·dma接收不定长
A懿轩A10 分钟前
C/C++ 数据结构与算法【栈和队列】 栈+队列详细解析【日常学习,考研必备】带图+详细代码
c语言·数据结构·c++·学习·考研·算法·栈和队列
汪洪墩12 分钟前
【Mars3d】设置backgroundImage、map.scene.skyBox、backgroundImage来回切换
开发语言·javascript·python·ecmascript·webgl·cesium
Python机器学习AI14 分钟前
分类模型的预测概率解读:3D概率分布可视化的直观呈现
算法·机器学习·分类
云空17 分钟前
《QT 5.14.1 搭建 opencv 环境全攻略》
开发语言·qt·opencv
Anna。。19 分钟前
Java入门2-idea 第五章:IO流(java.io包中)
java·开发语言·intellij-idea
居居飒19 分钟前
Android学习(四)-Kotlin编程语言-for循环
android·学习·kotlin
我曾经是个程序员42 分钟前
鸿蒙学习记录
开发语言·前端·javascript
爱上语文43 分钟前
宠物管理系统:Dao层
java·开发语言·宠物