gpt4 book ai didi

c - sprintf 中的 %f 似乎在 TI 84 CE 在线 IDE 中不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 00:02:04 24 4
gpt4 key购买 nike

当我在我的计算器上运行这个程序时:

void main(void) {
char *quot = malloc(10 * sizeof(char));
char *rest = malloc(10 * sizeof(char));
sprintf(quot, "%d", 5);
printText(quot, 0, 0);
sprintf(rest, "%f", 2.03);
printText(rest, 0, 1);
}
我的 TI 84 CE 计算器的

printText 函数:

void printText(const char *text, uint8_t xpos, uint8_t ypos) {
os_SetCursorPos(ypos, xpos);
os_PutStrFull(text);
}

这是我计算器 LCD 上的输出:

5
%

2.03有一个百分比标记,这是什么原因?

我已经包含了这些库:

#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include <tice.h> // this is for my TI84

最佳答案

%f 由于计算器中的内存限制而被禁用。 float 转换很昂贵。使用的 C 方言是 C89,这是最好的 C。无论如何,您可以通过在您的 makefile 中添加以下行来为您的程序启用 %f:

USE_FLASH_FUNCTIONS := NO

但这会大大增加二进制文件的大小,因此建议实现 %f 的自定义限制版本。或者,此代码将执行与 %f 相同的操作,但将输出复制到字符数组。

void float2str(float value, char *str) {
real_t tmp_real = os_FloatToReal(value);
os_RealToStr(str, &tmp_real, 8, 1, 2);
}

关于c - sprintf 中的 %f 似乎在 TI 84 CE 在线 IDE 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39022178/

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