首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >扫描嵌入式设备?

扫描嵌入式设备?
EN

Stack Overflow用户
提问于 2012-02-28 09:13:00
回答 2查看 1.8K关注 0票数 0

我在嵌入式设备语言是C.

我的代码是这样的:

代码语言:javascript
复制
unsigned char by = 0;
char txt[] = "12";
sscanf(txt , "%hhd" , &by);
printf("%d" , by);

当我在linux中运行这段代码时,它是正确的,但是在windows (VS2010)中有错误:

“在变量'by‘周围堆叠已损坏”。

而在我的设备上,错误变量“by”改为零。

我该怎么处理这段代码?

EN

回答 2

Stack Overflow用户

发布于 2012-02-28 09:23:14

检查MSDN页面上的scanf宽度形成,VC++不支持"hh"说明符。

如果可以的话,可以使用strtol

票数 0
EN

Stack Overflow用户

发布于 2012-02-28 09:23:17

只需使用阿托伊

代码语言:javascript
复制
const char* txt = "12";
unsigned char by = (unsigned char ) atoi(txt);

还有另一件事。

代码语言:javascript
复制
printf("%d" , by); 

这将不能正常工作,因为printf正在等待一个签名的int,并且正在获得一个无符号字符。它可能只有当你的嵌入式系统有8位整数时才能工作,但它不能在PC上工作。

另外,您要获得损坏的堆栈错误的原因是,sscanf将%hhd解释为它应该读取一个十进制值(我在我的计算机上测试过它),因此它用4个字节(如果您有32位ints)覆盖了变量'by‘周围的内存。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9479157

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档