草庐IT

strcpy_s

全部标签

C语言--模拟实现库函数strcpy

目录前言strcpy实现的基本原理函数的模拟实现代码优化assert--断言const关键字strcpy的返回值结语前言本章内容我们将通过相关函数来实现库函数中的strcpy。strcpy实现的基本原理C语言strcpy()函数用于对字符串进行复制(拷贝)。需要的头文件为。原理如下char*strcpy(char*strDestination,constchar*strSource);其中的strSource为源字符串,strDestination为目的字符串,strcpy的作用就是将strSource指向的字符串复制到strDestination。我们举个例子intmain(){ chara

c++ - Visual Studio 2012 中的 strcpy() 错误

所以我有这段代码:#include"stdafx.h"#include#include#includeusingnamespacestd;...char*b=newchar[10];strcpy(b,"1234567890");错误:microsoftvisualstudio11.0\vc\include\string.h(110):请参阅“strcpy”声明我该如何解决? 最佳答案 快速修复是将_CRT_SECURE_NO_WARNINGS定义添加到您的项目设置右键单击您的C++并选择“属性”项以进入属性窗口。现在按照并扩展到“配

c++ - 如何 strcpy 并返回复制的字符数?

我想将一个以null结尾的字符串复制到另一个位置,并想知道复制的字符串有多长。效率是最重要的。有strcpy函数可以实现这一点,但它不会返回实际复制了多少个字符。当然,我可以通过简单地在之后调用strlen来检测复制的字符串的长度来发现这一点,但这将意味着再次遍历字符串中的字符,虽然strcpy必须跟踪它复制了多少个字符。出于性能原因,我不想进行这样的二次遍历。我知道用一个简单的逐个字符的拷贝编写自己的strcpy很容易,但我认为标准库可能会应用魔法使strcpy更快而不是简单的逐字符实现。那么,strcpy并接收复制的字符数而无需再次遍历字符串的最佳方法是什么?

c++ - strcpy_s 不适用于 gcc

我有一个C++11项目,我添加了一些strcpy_s方法调用。这适用于Windows,但是在gcc上编译时,会出现错误声明未找到strcpy_s符号。我确实添加了行#define__STDC_WANT_LIB_EXT1__1代码,无济于事。 最佳答案 GCC(或者更确切地说,glibc)不支持strcpy_s()和friend。有关在哪里可以找到支持它们的库的一些想法,请参见此处:Arethereanyfreeimplementationsofstrcpy_sand/orTR24731-1?

c++ - c++ 中 strcpy 的替代方案

在C语言中,我使用strcpy对字符串进行了深度复制,但使用是否仍然“很好”C++中的strcpy还是我应该使用更好的替代方案? 最佳答案 我把它放在上面的评论中,但只是为了使代码可读:std::stringa="Hello.";std::stringb;b=a.c_str();//makesanactualcopyofthestringb=a;//makesacopyofthepointerandincrementsthereferencecount因此,如果您真的想模仿strcpy的行为,则需要使用c_str()复制它;更新应该

c++ - 为什么在遗留 strcpy() 中没有健全性检查

以下是strcpy在传统系统中最流行的实现。为什么一开始不检查dest和src是否为NULL?我曾经听说过,在过去,内存是有限的,所以总是首选短代码。您会在开始时使用NULL指针检查来实现strcpy和其他类似功能吗?为什么不呢?char*strcpy(char*dest,constchar*src){char*save=dest;while(*dest++=*src++);returnsave;} 最佳答案 NULL是一个坏指针,但(char*)0x1也是。它也应该检查吗?在我看来(我不知道确切的原因),不需要在如此低级的操作中进

c++ - 将 strcpy_s 用于 TCHAR 指针(Microsoft 特定)

我想知道哪种方法是正确的?_tcscpy(tchar_pointer,_tcslen(tchar_pointer),_T("HelloWorld"));或_tcscpy(tchar_pointer,_tcsclen(tchar_pointer),_T("HelloWorld"));或_tcscpy(tchar_pointer,???,_T("HelloWorld")); 最佳答案 假设您使用的是_tcscpy_s而不是_tcscpy,第二个参数应该是数组的实际大小,而不是当前包含的字符串的长度。例如:TCHARdest[20];_t

strlen, strcpy,strcmp,strcat,strncpy,strncmp,strncat,strst库函数的详细解析以及模拟实现

 🐶博主主页:@ᰔᩚ.一怀明月ꦿ ❤️‍🔥专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章🔥座右铭:“不要等到什么都没有了,才下定决心去做”🚀🚀🚀大家觉不错的话,就恳求大家点点关注,点点小爱心,指点指点🚀🚀🚀目录🐰strlen🐰模拟strlen🐰strcpy🐰模拟strcpy🐰strcat🐰模拟strcat🐰strcmp🐰模拟strcmp🐰strncpy🐰strncat🐰strncmp🐰strstr🐰模拟strstr🐰strlenstrlen用于求字符的长度,引用的头文件是#includestrlen的原型:size_tstrlen(constchar*str);str:待求字符串的

strlen, strcpy,strcmp,strcat,strncpy,strncmp,strncat,strst库函数的详细解析以及模拟实现

 🐶博主主页:@ᰔᩚ.一怀明月ꦿ ❤️‍🔥专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章🔥座右铭:“不要等到什么都没有了,才下定决心去做”🚀🚀🚀大家觉不错的话,就恳求大家点点关注,点点小爱心,指点指点🚀🚀🚀目录🐰strlen🐰模拟strlen🐰strcpy🐰模拟strcpy🐰strcat🐰模拟strcat🐰strcmp🐰模拟strcmp🐰strncpy🐰strncat🐰strncmp🐰strstr🐰模拟strstr🐰strlenstrlen用于求字符的长度,引用的头文件是#includestrlen的原型:size_tstrlen(constchar*str);str:待求字符串的

c - strcpy 的 valgrind 错误

此代码应该从userInput空终止字符串中提取路径/*begincreatePath*/staticinlinechar*createPath(char*userInput){/*ThisfunctionretunsthepathfromtheuserInput*/intpathStringLength=0;char*buf=userInput;while(*(buf++)!='')pathStringLength++;char*path=malloc(pathStringLength+1);strncpy(path,userInput,pathStringLength);//mem