c++-关于strcpy和strcpy_s

问题描述

关于strcpy和strcpy_s
char * hobby;char * ho=""safafaf"";hobby=new char[strlen(ho)+1];strcpy(hobbyho);这里为什么只能用strcpy不能用strcpy_s?

解决方案

s?t?r?c?p?y_s需要三个参数,第二个参数指定长度防止越界,而strcpy只需要两个参数。

解决方案二:
为了减少溢出的可能,_s出来了。
可是为了移植,它不通用,问题又出来了。
?
?......
答案就在这里:关于strcpy_s

解决方案三:
strcpy 和 strcpy_s 函数,如果你的系统中有实现,应该是一个能用的地方、另一个也一定能用
你所说的 strcpy_s 函数不能用是什么现象?可能是你使用的方法不正确吧。因为两个函数的参数是不相同的。

解决方案四:

解决方案五:
试试强制类型转换一下:strcpy_s((char *)hobbyc.hobby);

解决方案六:
参数不同,你没有正确调用strcpy_s

时间: 2024-08-03 02:19:21

c++-关于strcpy和strcpy_s的相关文章

strcpy-字符串操作出现意外状况

问题描述 字符串操作出现意外状况 操作系统为win7,开发工具为vs2010,C语言中我定义了一个结构体,typedef struct amqp_init{ char exchange[20]; char routekey[20]; char type[10]; amqp_socket_t* socket; amqp_connection_state_t conn; amqp_basic_properties_t props; amqp_queue_declare_ok_t* havequeue

strcpy-C语言,这个错误是什么意思呀?

问题描述 C语言,这个错误是什么意思呀? #include #include struct data{ char s[30]; int n; float x;};struct data example()//定义结构体类型函数{ struct data emp; strcpy_s(emp.sAn example!""); emp.n = 68; emp.x = 213.52; printf(""%s%d%fn"" emp.s emp.n emp.

strlen-c++中用vs2013时strcpy_s的问题

问题描述 c++中用vs2013时strcpy_s的问题 #include #include int main(){ using namespace std; char animal[20] = ""bear""; const char * bird = ""wren""; char * ps; cout << animal << "" and "";cout &

c语言-strcpy和strcat的使用问题,搞不懂为什么出现这样的错误?怎么改呢》?

问题描述 strcpy和strcat的使用问题,搞不懂为什么出现这样的错误?怎么改呢>? int _tmain(int argc, _TCHAR* argv[]) { char n; CString strTime; // 用于将CTime对象格式化为字符串 CTime curTime = CTime::GetCurrentTime(); cout<<GetExePath()<<endl; /*cout<<"请输入要删除几天前的文件夹:"; c

vc 中用strcpy函数遇到的问题

问题描述 vc 中用strcpy函数遇到的问题 小弟我在做strcpy函数的测试,代码如下 char pContent[20]; CString str = "qwertyuiopasdfghjklzxcvbnm1312311111111111111111111111111111111111111111111111111"; strcpy(pContent,str); AfxMessageBox(pContent); 我很疑问,问啥我定义了长度给20的数组,str的长度明显是大于20的

c++中strcpy函数在VS2015无法使用的问题_C 语言

本篇文章介绍了c++中strcpy函数在VS2015无法使用的问题. 一:原因:一般认为是vs准备弃用strcpy的,安全性较低,所以微软提供了strcpy_s来代替 然而,strcpy_s并没有strcpy好用,我们要想继续在VS2015中使用strcpy该怎么办 呢?下面是几种解决方法 解决方法: 1.其实在下面的输出错误信息中有解决方法,"To disable deprecation , use _CRT_SECURE_NO_WARNINGS",意思是我们可以不进行兼容性检查,我

C语言中函数strcpy ,strncpy ,strlcpy的用法【转】

转自:http://blog.chinaunix.net/uid-20797562-id-99311.html strcpy ,strncpy ,strlcpy的用法好多人已经知道利用strncpy替代strcpy来防止缓冲区越界.但是如果还要考虑运行效率的话,也许strlcpy是一个更好的方式.1. strcpy 我们知道,strcpy 是依据 \0 作为结束判断的,如果 to 的空间不够,则会引起 buffer overflow.strcpy 常规的实现代码如下(来自 OpenBSD 3.9

对 strcpy_s 若干测试

今天发现如果strcpy这函数,目标buffer太小,会有意想不到的崩溃.而且不容易调试.以后尽量要用strcpy_s了. strcpy_s是strcpy的更安全的版本 1.当目标字符串参数是一个字符串数组时可以不要numberOfElements这个参数,例如: char szBuf[50]; strcpy_s(szBuf,50,"dfassfasfasfsf"); strcpy_s(szBuf,"dfassfasfasfsf"); //也正确 如果目标字符串参数

关于strcpy的问题,求解答

问题描述 关于strcpy的问题,求解答 将第二个字符串复制到第一个字符串时第一个字符串后面的长于第二个字符串的字符会收到影响吗 如第一个字符串是a[15]="how do you do"第二个字符串是"what is it"输出a时还有后面的do吗 解决方案 复制的时候是连一起复制的,所以复制的结果是 what is itdo... 如果你用printf去输出,它输出到就为止了,不再输出后面的东西. 从内存的角度讲,还在,但是显示的时候没了. 解决方案二: 很好的