strcpy系列函数
strcpy用法:
原型声明:char *strcpy(char* dest, const char *src);
头文件:#include <string.h> 和 #include <stdio.h>
功能:把含有’\0’结束符的字符串复制到另一个地址空间,返回值的类型为char*。
说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
strcpy_s用法:
该函数是VS2005之后的VS提供的,并非C标准函数
1
原型:三个參数时:errno_t strcpy_s(char *strDestination, size_t numberOfElements, const char *strSource);
两个參数时:errno_t strcpy_s(char (&strDestination)[size], const char *strSource); // C++ only
功能:同strcpy()函数功能相同,不同之处在于参数中多了个size_t类型的参数,该参数为字符串dst的长度,当存在缓存区溢出的问题时(即src的长度大于dst的长度),strcpy_s()会抛出异常;而strcpy()结果则未定,因为它错误地改变了程序中其他部分的内存的数据,可能不会抛出异常但导致程序数据错误,也可能由于非法内存访问抛出异常。
说明:两个参数时,若dst长度小于src长度时,会出错,并提示。
strncpy用法:
头文件:#include <string.h>
语法:char *strncpy(char *destinin, char *source, int maxlen);
功能:strncpy函数用于将指定长度的字符串复制到字符数组中。
说明:C语言的库函数之一,来自 C语言标准库。如果n<source的长度,只是将source的前n个字符复制到destinin的前n个字符,不自动添加’\0’,也就是结果destinin不包括’\0’,需要再手动添加一个’\0’。如果source的长度小于n个字节,则以NULL填充destinin直到复制完n个字节。source和destinin所指内存区域不可以重叠且destinin必须有足够的空间来容纳source的字符长度+’\0’。
strncpy_s用法:
原型:
四个参数时:errno_t strncpy_s(char *strDest, size_t numberOfElements, const char *strSource, size_t count);
三个參数时:errno_t strncpy_s(char (&strDestination)[size], const char *strSource, size_t count);
说明:
1.参数numberOfElements表明dest中的字节数,防止目标指针dest中的空间不够,同时返回值改成返回错误代码,而不是返回char*。
2.会在字符串结束处填补一个空字符。
3.count参数需要小于目标缓冲区大小。
4.windows的扩展,非C标准函数,linux下可用strncpy进行替换。
5.参数个数不同的情况类比strcpy_s。
尽量使用strcpy和strncpy,方便移植,降低平台依赖
————————————————
版权声明:本文为CSDN博主「ega_t」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/egahhhh/article/details/103492985
strcpy系列函数相关推荐
- Str库系列函数合集(strlen、strcpy、strcmp、strcat、strchr等)
关于Str函数,网上五花八门,使初学者很容易迷失方向,笔者在这里做一个常用函数的总结.希望对读者起到些许帮助. 后续会持续更新特殊函数~ 想了解mem系列函数的,请猛戳这里→mem系列函数 代码 // ...
- c语言str系列函数
qsort() str系列函数 isalpha() 1,qsort() 功能: 快速排序,其时间复杂度为n*log(n) 头文件: <stdlib.h> 声明: void qsort(vo ...
- C语言strlen等系列函数详细总结
目录 一.strlen函数 二.C语言模拟实现strlen函数的3种方法 三.str系列函数 strcpy函数 strcat函数 strcat函数模拟实现 strcmp模拟实现 一.strlen函数 ...
- windows线程同步-原子操作-Interlocked系列函数(用户模式)
Interlocked系列函数用来保证原子访问. InterlockedExchangeAdd提供保证long类型的原子操作. InterlockedExchangeAdd64提供long long ...
- 浅析php curl_multi_*系列函数进行批量http请求
何起: 一系列 数量很大 数据不热 还希望被蜘蛛大量抓取的页面,在蜘蛛抓取高峰时,响应时间会被拉得很高. 前人做了这样一个事儿:页面分3块,用3个内部接口提供,入口文件用curl_multi_*系列函 ...
- 线程模型、pthread 系列函数 和 简单多线程服务器端程序
一.线程有3种模型,分别是N:1用户线程模型,1:1核心线程模型和N:M混合线程模型,posix thread属于1:1模型. (一).N:1用户线程模型 "线程实现"建立在&qu ...
- UNIX再学习 -- exit 和 wait 系列函数
我们一开始讲进程环境时,就有提到了.进程有 8 种方式使进程终止. 其中 5 种为正常终止,它们是: (1)在 main 函数中执行 return (2)调用 exit 函数,并不处理文件描述符,多进 ...
- 《Windows核心编程》---Interlocked原子访问系列函数
所谓原子访问,指的是一个线程在访问某个资源的同时能够保证没有其他线程会在同一时刻访问同一资源.Interlocked系列函数提供了这样的操作.所有这些函数会以原子方式来操控一个值. Interlock ...
- 秒杀多线程第三篇 原子操作 Interlocked系列函数
上一篇<多线程第一次亲密接触 CreateThread与_beginthreadex本质区别>中讲到一个多线程报数功能.为了描述方便和代码简洁起见,我们可以只输出最后的报数结果来观察程序是 ...
最新文章
- Nginx源码研究三:Epoll在NGINX中的使用
- how to verify that Listener is entry point of application
- Magicodes.IE 2.5版本发布
- 重要的数据结构--队列(C语言实现)
- 富士康海外工厂遭黑客攻击 被勒索1804枚比特币
- Java判断字符串是否是数值
- JS—图片压缩上传(单张) 1
- 3.JAVA内存溢出
- HTML 参考手册 - 浏览器支持
- python用lda主题_python下进行lda主题挖掘(二)——利用gensim训练LDA模型
- ISTQB认证考试攻略大全(2018版)
- 如何运用阿里巴巴国际站进行数据分析?
- openvpn部署和迁移
- python导入数学函数_Python 数学函数模块(Math)
- 大白菜U盘PE重装教程
- 求任意一个自然数n的立方均可写成n个连续奇数之和。
- SLAM导航机器人零基础实战系列:(三)感知与大脑——5.机器人大脑嵌入式主板性能对比...
- 通过php内核变量绕过,利用PHP内核变量绕过disable_functions(附完整代码)
- “添翼杯”人工智能创新应用大赛之垃圾分类
- 一张图看懂DC ICC PT的关系