【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博客


相关推荐
吃好睡好便好11 小时前
博客等级升级啦
学习
小新同学^O^11 小时前
简单学习 --> Spring事务
数据库·学习·spring
c1s2d3n4cs11 小时前
Qt模仿nlohmann::json进行序列化和反序列化
开发语言·qt·json
如何原谅奋力过但无声11 小时前
【灵神高频面试题合集06-08】反转链表、快慢指针(环形链表/重排链表)、前后指针(删除链表/链表去重)
数据结构·python·算法·leetcode·链表
平行侠11 小时前
037插入排序 - 整理扑克牌的算法
数据结构·算法
ECT-OS-JiuHuaShan11 小时前
彻底定理化:从量子纠缠到量子代谢
数据库·人工智能·学习·算法·生活·量子计算
AiTop10011 小时前
Claude Code 推出 Agent View:命令行编程正式进入“多线程并发“时代
开发语言·人工智能·ai·aigc
jf加菲猫11 小时前
第21章 Qt WebEngine
开发语言·c++·qt·ui
爱喝雪碧的可乐12 小时前
2026 腾讯广告算法大赛优秀方案启示:行为条件化多模态自回归生成推荐摘要
算法·数据挖掘·回归·推荐系统·推荐算法
碧海银沙音频科技研究院12 小时前
音箱在加入 NN AEC(神经网络声学回声消除) 后出现反复重启问题解决
人工智能·深度学习·算法