3475|6

64

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

请教关于evc中sizeof()函数的问题 [复制链接]

大哥大姐们好!小弟这儿有礼了!一定给分!
  我在写一个读取串口的程序,但是在其中的sizeof()函数中遇到了问题。当要向串口写数据时,我使用了函数
  fWriteStat = WriteFile(hCom, lpBuf, sizeof(lpBuf),&dwHaveNumWritten,NULL);
  其中lpBuf定义为char *lpBuf 类型。
  但是无论我给lpBuf什么样子的值,都只能传输四个字节给串口。比如我要传数据w shao...,但是串口的另一端只能接收到w s。后面的字符都接收不到。
  这里我用串口调试工具接受串口数据,接受部分肯定没有问题。并且,当我把sizeof(lpBuf)该成40时,即
  fWriteStat = WriteFile(hCom, lpBuf, 40,&dwHaveNumWritten,NULL);
  串口可以成功的将40个字符顺利传出。
  请问为什么会出现这个问题?莫非是不该用sizeof()还是因为sizeof()里的参数类型不对?

  或者说我打得sdk有问题?
 
                                谢谢,一定给分,我信誉很好

最新回复

还是没有解决实际问题。如何让动态的sizeof()。我现在数组开多少,sizeof()就有多少。怎么能给数组附一大串值。我发现mfc和c、c#语言好不一样。。  详情 回复 发表于 2007-11-11 10:26
点赞 关注

回复
举报

83

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
是sizeof()的问题...

sizeof要对一个空间取长度的时候,必须要求这个类型在本文件域内有确定的显示的长度

你传入的是一个地址,这个地址不明确,所以它就取这个地址的类型了

如果你传入一个数组,数组是确定长度的,这就安全明确了....

你传:

char TBuf[40];

sizeof(TBuf[]);
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
sizeof(TBuf);

如果不是确切的声明,那sizeof();就不干活....

#include

int main()
{
    char a[5];
    char *c = NULL;
    printf("%d\n",sizeof(a));
    printf("%d\n",sizeof(c));
    system("PAUSE");   
}

结果:
5
4
请按任意键继续.
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

4
 
谢谢2位~我明天弄成功了~就给2位加分
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

5
 
你楼上明明是1位,难道见鬼了?
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

6
 
哈哈

补充一下:
char   *c   =   NULL;

这句改成:
char   *c   =   a;

更具说服力,刚刚有点疏忽...
呵呵

 
 
 

回复

87

帖子

0

TA的资源

一粒金砂(初级)

7
 
还是没有解决实际问题。如何让动态的sizeof()。我现在数组开多少,sizeof()就有多少。怎么能给数组附一大串值。我发现mfc和c、c#语言好不一样。。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表