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


相关推荐
星辰_mya2 分钟前
CompletableFuture:异步编程的“智能机械臂”
java·开发语言·面试
阿蒙Amon3 分钟前
C#常用类库-详解AutoMapper
开发语言·c#
午彦琳4 分钟前
leetcode hot 100_49,128
算法·leetcode·职场和发展
..过云雨7 分钟前
【负载均衡oj项目】01. 项目概述及准备工作
linux·c++·html·json·负载均衡
沐知全栈开发9 分钟前
C 头文件
开发语言
郝学胜-神的一滴10 分钟前
深度解析:Python元类手撸ORM框架,解锁底层编程魔法
数据结构·数据库·python·算法·职场和发展
yuuki23323311 分钟前
【C++ 智能指针全解析】从内存泄漏痛点到 RAII + unique/shared/weak_ptr 手撕实现
开发语言·c++
小光学长14 分钟前
基于ssm的书法学习交流系统25ki07v1(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
java·开发语言·数据库·学习·ssm
big_rabbit050216 分钟前
[算法][力扣219]存在重复元素2
数据结构·算法·leetcode
不光头强23 分钟前
HashMap知识点
java·开发语言·哈希算法