Chinaunix首页 | 论坛 | 博客
  • 博客访问: 573719
  • 博文数量: 493
  • 博客积分: 2891
  • 博客等级: 少校
  • 技术积分: 4960
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-17 17:11
文章分类

全部博文(493)

文章存档

2010年(493)

分类:

2010-05-12 18:12:31

1 现象:问题描述
接口CICS后台服务程序,业务受理时需要向消息队列中插入数据,网管程序从消息队列中采集数据进行入库,入库时报错,存储过程执行失败。
3 结论:解决方案及效果
在该类对象构造函数增加对该成员的初始化
CMsgCommProc::CMsgCommProc()
{
    duration = 0;
    nmtraceflag = 0;
    nmflag = 0;
    strcpy(nmkeyfile, "/tux80/apps/DataCollect.KEY");
    msgcnt = 0;
    memset(sendbuf, 0, sizeof(sendbuf));
}
程序重新编译,问题得到解决。
4 经验总结:预防措施和规范建议
类构造函数是对类成员的初始化,编程过程时刻要注意,没有经过初始化的变量,直接使用,会出现意想不到的问题,程序可能会正常运行,但是有时候就会出现问题,正常运行往往使得开发人员忽略了其问题所在,所以希望大家养成习惯,正确编写类的构造函数,避免在一些不该出现的问题上浪费时间,提高工作效率,降低开发成本。
6 考核点
是否遗漏对类成员的变量初始化。
7 试题
char msg[100],subsys[10],region[10],opcode[16],starttime[16], sendbuf[1024];
int duration, success;
memset(msg,0,sizeof(msg));
strcpy(subsys,"REC");
strcpy(region,"534");
strcpy(opcode,"TyczChargeFee");
strcpy(starttime,"20060620104924");
duration=169;
success=1;
sprintf(msg,"%-3s%-3s%-14s%-14s%-10ld%d;",subsys,region,opcode,starttime,duration,success);
strcat(sendbuf,msg);
printf("send message:%s\n",sendbuf);
上面这段代码的输出如下:
send message:象^PREC534TyczChargeFee 20060620104924169       1;
请问可能造成这个问题的原因是:(C)
阅读(371) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~