gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 09:42:05 26 4
gpt4 key购买 nike

在处理嵌入式项目时,我注意到以下代码的 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;
};

以上都是使用 C/C++Platform.io VS Code 的扩展。

这里出了什么问题?

最佳答案

printf 的嵌入式版本通常不实现 float 处理。您需要让链接器链接正确版本的函数。例如对于 ARM gcc,它将是 -u _printf_float 或/和 -u _scanf_float

关于c - 为什么 sprintf() 会生成问号字符作为输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58961770/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com