找出下列程序的错误,我只能找出一个.

cgsw12345 2005-05-05 12:23:53
#pragma pack(4)
struct DATA_REPORT
{
UC DataLinkNo;
US Length;
UC DataType;
UC DataValue[20];
};
#define DATA_TEST 10
struct DATA_REPORT &FuncA(void)
{
struct DATA_REPORT DataReport;
DataReport.Length = 24;
DataReport.DataType = DATA_TEST;
strcpy( DataReport. DataValue, “FuncA Send Data For Test! Data length is 20”);
return DataReport;
}

BOOL FuncB(struct DATA_REPORT &DataReport)
{
CHAR tmpData[18];
memcpy(tmpData, DataReport.DataValue, DataValue.Length);
return TRUE;
}
void FuncC(void)
{
struct DATA_REPORT DataReport;
DataReport=FuncA();
FuncB(DataReport);
}
大家帮忙找找.
...全文
163 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhousqy 2005-05-05
  • 打赏
  • 举报
回复
BOOL FuncB(struct DATA_REPORT &DataReport)
{
CHAR tmpData[18];
memcpy(tmpData, DataReport.DataValue, DataValue.Length);
return TRUE;
}
--------------
这函数总是return true,有啥意义?
zhousqy 2005-05-05
  • 打赏
  • 举报
回复
strcpy( DataReport. DataValue, “FuncA Send Data For Test! Data length is 20”);
----------------------------------------
溢出。
oyljerry 2005-05-05
  • 打赏
  • 举报
回复
这里DataValue.Length的长度是不是超过18了
astrophor 2005-05-05
  • 打赏
  • 举报
回复
US和UC都是什么类型
感觉UC是字符型US是整型
DataReport.DataType = DATA_TEST;似乎不合适
astrophor 2005-05-05
  • 打赏
  • 举报
回复
struct DATA_REPORT &FuncA(void)
{
struct DATA_REPORT DataReport;
DataReport.Length = 24;
DataReport.DataType = DATA_TEST;
strcpy( DataReport. DataValue, “FuncA Send Data For Test! Data length is 20”);
//太长,数组越界
return DataReport;  //返回的是临时变量的引用
}
ltc_mouse 2005-05-05
  • 打赏
  • 举报
回复
BOOL FuncB(struct DATA_REPORT &DataReport)
{
CHAR tmpData[18];
memcpy(tmpData, DataReport.DataValue, DataValue.Length);
return TRUE;
}

//操作的是局部变量,没什么意义呀
听海拉拉 2005-05-05
  • 打赏
  • 举报
回复
up
dongpy 2005-05-05
  • 打赏
  • 举报
回复
struct DATA_REPORT &FuncA(void)
{
struct DATA_REPORT DataReport;
。。。。。。。。。。。。。。。。。。。。。
strcpy( DataReport. DataValue, “FuncA Send Data For Test! Data length is 20”);
return DataReport;
}
//strcpy访问数组越界。
//函数局部变量的引用,返回无效。

BOOL FuncB(struct DATA_REPORT &DataReport)
{
CHAR tmpData[18];
memcpy(tmpData, DataReport.DataValue, DataValue.Length);
return TRUE;
}
//memcpy访问数组越界。
源码直接下载地址: https://pan.quark.cn/s/a4b39357ea24 平台简介 License Spring Boot JDK-17 本项目基于ruoyi-vue-fast实现 项目代码、文档 均开源免费可商用 遵循开源协议在项目中保留开源协议文件即可 活到老写到老 为兴趣而开源 为学习而开源 为让大家真正可以学到技术而开源 若依wms是一套基于若依的wms仓库管理系统,支持lodop和网页打印入库单、出库单。 毫无保留给个人及企业免费使用。 前端采用Vue、Element UI。 后端采用Spring Boot、Spring Security、Redis & Jwt。 权限认证使用Jwt,支持多终端认证系统。 支持加载动态权限菜单,多方式轻松权限控制。 高效率开发,使用代码生成器可以一键生成前后端代码。 前端项目地址 gitee https://gitee.com/zccbbg/ruo-yi-wms-vue https://.com/zccbbg/RuoYi-WMS-VUE 若依实战技术专栏 关注文末公众号回复:星球 在线体验 https://wms.ichengle.top/ 不同分支介绍 jdk17+vue3,支持多仓库,没有库区概念,操作简单,覆盖大部分库存应用场景。 jdk17+vue3,支持多仓库、多库区,记录生产日期、过期日期、sn,可适配一物一码,操作相对复杂。 jdk8+vue2 同步lite分支 若依wms功能 首页:库存预警与到期提醒、基础数据报表展示 仓库/库区:管理维护仓库基础数据 物料:管理维护物料基础数据 客户/供应商:管理维护联系人基础数据 入库:创建入库单后包括如下几个状态:暂存、作废、完成入库,入库类型包括:采购...

65,213

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧