c51 遇到的问题

[复制链接]
 楼主| xg3469 发表于 2012-9-7 16:28 | 显示全部楼层 |阅读模式
用 c51编译一个程序,出现了警告信息:
d:\BIN1\NS9F2.C(2995): warning C182: pointer to different objects

警告该语句有问题,strncpy(siobuf,fz17,8);我是想把数组fz17[]中的unicode码拷贝到串口发送缓冲区的。

uint code fz17[8]= {0x624b,0x673a,0x53f7,0x7801};

请专家指点该用哪个函数,哪本书里介绍这些函数?谢谢。
coody 发表于 2012-9-7 16:40 | 显示全部楼层
指针不匹配。
 楼主| xg3469 发表于 2012-9-7 16:59 | 显示全部楼层
请2楼老师详细说说好吗?
znmcu 发表于 2012-9-7 17:13 | 显示全部楼层
还是那句话:80%的问题源于c语言。
你siobuf的类型我猜是uchar
airwill 发表于 2012-9-7 18:25 | 显示全部楼层
是不是 strncpy 定义里的
两个指针的类型和应用中的不匹配?
celticzy 发表于 2012-9-7 18:42 | 显示全部楼层
C51中的strncpy 的原型是char *strncpy (char *s1, char *s2, int n),你的fz17数组是明显16位的,当然要出错
 楼主| xg3469 发表于 2012-9-7 22:57 | 显示全部楼层
谢谢4、5、6楼,用dos版C51是可以的,我再试试。
 楼主| xg3469 发表于 2012-9-7 23:07 | 显示全部楼层
在数组fz17里,4个16位数,我按8个字节处理不行吗?
 楼主| xg3469 发表于 2012-9-7 23:24 | 显示全部楼层
向各位汇报:将uint code fz17[8]= {0x624b,0x673a,0x53f7,0x7801};改为
             uchar code fz17[8]= {0x624b,0x673a,0x53f7,0x7801};就可以了。谢谢大家。
amwrdfe 发表于 2012-9-8 00:39 | 显示全部楼层
uchar code fz17[8]= {0x624b,0x673a,0x53f7,0x7801}
这本身就是一个错误,虽然你的编译器不提醒你。
 楼主| xg3469 发表于 2012-9-8 22:08 | 显示全部楼层
我试了 uchar code fz17[8]= {0x62,0x4b,0x67,0x3a,0x53,0xf7,0x78,0x01} 和
uchar code fz17[8]= {0x624b,0x673a,0x53f7,0x7801},虽然编译都能通过,但改为 uchar code fz17[]= {0x62,0x4b,0x67,0x3a,0x53,0xf7,0x78,0x01} 才正确。谢谢10楼。
P__204 发表于 2012-9-9 23:35 | 显示全部楼层
围观
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

595

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部