热门标签 | HotTags
当前位置:  开发笔记 > 开发工具 > 正文

为什么sprintf()会生成问号字符作为输出?

如何解决《为什么sprintf()会生成问号字符作为输出?》经验,为你挑选了1个好方法。

在嵌入式项目上工作时,我注意到sprintf()以下代码的方法:

  char ln2[16];
  sprintf(ln2, "%f Volt", Data[Position].Voltage1);

生成问号字符作为输出。

从上面的代码生成的输出是:

? Volt

而输入声明为 double Voltage1 = 0.0;

尝试格式化整数时,似乎不存在相同的问题。
预期的工作如下:

  char ln1[16];
  sprintf(ln1, "POSITION %d", (Position + 1));

并输出POSITION 3其中的Position是全局变量并声明为int

实际保存数据的结构是:

struct data
{
  int Position;
  double Voltage1;
  double Voltage2;
};

以上全部针对VS Code 使用C / C ++ 和Platform.io扩展。

这是怎么了?



1> P__J__..:

嵌入式版本的printf通常不实现浮点数处理。您需要让链接器链接正确版本的函数。例如,对于ARM gcc,它将为-u _printf_floator / and-u _scanf_float


推荐阅读
author-avatar
美好心灵66
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有