有关微软那些_s后缀的字符串函数及其中参数rsize的知识

首先声明:大家要是看官方解释看不懂,可以直接去看“自己的测试及理解”这里,简洁明了,函数这些东西,只要自己会用就行,其实不用深究。


strcpy和strncpy_s的微软官方说明

strcpy_s、wcscpy_s、_mbscpy_s、_mbscpy_s_l | Microsoft Learn详细了解:strcpy_s、wcscpy_s、_mbscpy_s、_mbscpy_s_licon-default.png?t=N7T8https://learn.microsoft.com/zh-cn/cpp/c-runtime-library/reference/strcpy-s-wcscpy-s-mbscpy-s?view=msvc-170strncpy_s、_strncpy_s_l、wcsncpy_s、_wcsncpy_s_l、_mbsncpy_s、_mbsncpy_s_l | Microsoft Learn详细了解:strncpy_s、_strncpy_s_l、wcsncpy_s、_wcsncpy_s_l、_mbsncpy_s、_mbsncpy_s_licon-default.png?t=N7T8https://learn.microsoft.com/zh-cn/cpp/c-runtime-library/reference/strncpy-s-strncpy-s-l-wcsncpy-s-wcsncpy-s-l-mbsncpy-s-mbsncpy-s-l?view=msvc-170


 

关于rsize和strcpy_s

c++为什么要定义 rsize_t_编程设计_ITGUEST发现strncpy_s()在VS2013下定义为 errno_t __cdecl strncpy_s ( _Out_writes_z_(_SizeInBytes) char * _Dst, _In_...icon-default.png?t=N7T8https://www.itguest.com/post/adacdg1a1.html

b4746e8997204ff58ac1bd59039729af.png

百度安全验证icon-default.png?t=N7T8https://zhidao.baidu.com/question/374512751879276204.html

在VS中,需要替换的两个常用的string函数_vs使用strcpy-CSDN博客文章浏览阅读510次。用法:strcat_s(str1, rsize_t, str2)用法:strcpy_s(str1, rsize_t,str2)_vs使用strcpyhttps://blog.csdn.net/weixin_73283213/article/details/128376896 380fa89c912c46b5b02df7b217bf9af5.png

【干货】如何提高C语言代码质量?(三) - 哔哩哔哩使用rsize_ t或size_ t类型来表示一个对象所占用空间的整数值单位C语言标准规定size_t是一种无符号整数类型,编译器可以根据操作系统的不同而用typedef来定义不同的size_ t类型,即在不同的操作系统上所定义的size_ t 可能不一样。例如在32位操作系统上可以将size_t定义为unsigned int类型,而在64位操作系统上则可以定义为unsigned long int类型,甚至还可以将size_ t定义为unsigned long long int类型。size_icon-default.png?t=N7T8https://www.bilibili.com/read/cv2667704/ 6c0aec53d41f4700a1067a7436bb4b02.png

1f1403f1b2e348e6abc485bb89a8f285.png

7e0486b99f2545dd940bc45f4b29c983.png

 C++中函数strcpy和strcpy_s - 一小白 - 博客园 (cnblogs.com)icon-default.png?t=N7T8https://www.cnblogs.com/htfeng/p/9931734.html


 !!!

自己的测试及理解 

请注意代码,为了防止大家运行出错,所以strcpy_s函数代码进行了注释,只运行了strncpy_s

#include<stdio.h>
#include<string.h>
int main(void)
{
	char str1[20] = "hello";             
	char str2[20] = "abc";    
          
	//strcpy_s(str1, 4, str2);  按照我的测试理解意思,第二个参数,是拷贝后(函数运行后)str1现在的所占内存的字符串大小(sizeof),且该数字必须大于等于4并且不能超过20(因为定义的数组最大为20),即在4~20之间。
    //所以一般第二个参数写成:strlen(str2)+1,即:strcpy_s(str1, strlen(str2)+1, str2);

	strncpy_s(str1, 3, str2, 2);  //第二个参数3,跟上文分析一样,且必须大于等于3(因为还有'\0')
	printf("%s", str1);
	return 0;
}

strcpy_s(str1, 4, str2);  按照我的测试理解意思,第二个参数,是拷贝后(函数运行后)str1现在的所占内存的字符串大小(sizeof),且该数字必须大于等于4并且不能超过20(因为定义的数组最大为20),即在4~20之间。
所以一般第二个参数写成:strlen(str2)+1,即:strcpy_s(str1, strlen(str2)+1, str2);

!!! 


 

strcat_s

42e94870339f4a709032fa2af9797eab.png C语言字符串拼接_哔哩哔哩_bilibiliC语言字符串拼接, 视频播放量 450、弹幕量 1、点赞数 7、投硬币枚数 2、收藏人数 1、转发人数 0, 视频作者 心灵驿站_, 作者简介 指导教学嵌入式私聊:3360702506 CSDN技术交流:人才程序员 C/C++/QT交流群:870876548,相关视频:【AI 纳西妲】纳西妲教你C语言 指针,你敢相信吗?世界编程大赛第一名作品居然只有几kb??给你绝对的震撼!,如果我违反了开源协议,不公开源代码,那别人怎么样知道我违反了协议呢?,都快2024了,竟然还有大学给大一新生上C语言课!这难道不是误人子弟,耽误学生!?,2024新的风口,目前900块一小时,停止内耗,,为自己打工!!,【B站首发】交大搞信息的学生,转行做肉夹馍!,辞职不删掉这些文件,小心隐私泄露!,12线程编译Linux内核,震撼你的视觉,身边程序员的现状,C语言sprintficon-default.png?t=N7T8https://www.bilibili.com/video/BV1oj411C74N/?spm_id_from=333.999.0.0&vd_source=7142822062f84579a9e9978ccf625238

  • 21
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值