c++ - 不了解 C++ 中的 strcpy
问题描述
char* s1;
strcpy(s1,"smilehihi");
s1[6] = 'a';
当我编译时,VS没有任何错误。但是在运行时,我的代码出错了。我想我不太了解 strcpy
解决方案
这里的主要问题不是strcpy()
函数,而是您没有为字符串本身分配任何内存的事实。如果我是你,我会做类似的事情
char* s1=(char*)malloc(SIZE); // the SIZE is the predefined maximum size of your string
strcpy(s1,"smilehihi");
s1[6] = 'a';
编辑:
作为建议,请考虑使用stpncpy()
. 它有助于避免缓冲区溢出,并且在您的情况下,将帮助您避免超过最大大小char*
char * stpncpy(char * dst, const char * src, size_t len);
推荐阅读
- json - JsonParseException: Unexpected character ('s' (code 115)): 期待双引号开始字段名称
- python - Firebase python读/写使用计数?
- c# - 有没有办法继承静态函数调用带有参数的子类的构造函数?
- android - 响应是:{状态:错误,消息:需要所有字段。}在颤动中调用 Api 时,这将在 cmd 中输出
- java - java.rmi.ConnectException:连接拒绝托管:docker容器中的localhost
- ruby-on-rails - Rails 5 - 如何删除 twitter-bootstrap-rails gem 并手动安装
- amazon-web-services - AWS SQS 队列:此 wsdl 版本不存在指定的队列
- colors - 在三个js中加载纹理形式MTL文件时颜色错误
- flutter - 在 Flutter 的垂直列表视图中滚动到水平列表视图中的项目
- angular - Angular Luxon DateTime 对象显示为字符串