c++ - strcpy_s 函数在我的代码中不起作用
问题描述
该函数应该将 char[] 复制到分配的存储中。由于某种原因,缓冲区对于此操作总是太小。
str(char* f) {
len = strlen(f);
txt = (char*)malloc(len); //txt is a pointer to a char
strcpy_s(txt, len, f);
}
解决方案
由于某种原因,缓冲区对于此操作总是太小。
您忘记为空终止符分配内存。一个空字符串需要一个字符(终止符)的空间。长度为 1 的字符串需要两个字符 (1 + 1) 的空间。一个长度的字符串len
需要len + 1
字符空间。
那说:
- 在 C 中,请
strdup
改用。 - 在 C++ 中,不要使用
strlen
,malloc
norstrcpy_s
(norstrdup
)。我推荐std::string
。
推荐阅读
- javascript - 如何仅使用 Brunch 构建我的 React Web 应用程序中使用的 JavaScript?
- python - Python:计算迭代次数以实现完美的洗牌?
- reactjs - 如何为反应引导分页进行分页
- javascript - 将 reduce() 与 + 运算符一起使用的最简洁方法是什么?
- javascript - React 找不到模块
- javascript - 根据单选输入值设置 if 条件
- php - MYSQL 不同列行对查询
- css - 导航中的最后一个元素不在中心
- three.js - 加载材质纹理图像时如何使用异步/等待
- javascript - 将命令 Discord.js 列入黑名单后的原因