在 C 中将 int 转换为 char 的问题

Issues with converting int to char in C

我写了一个用于调试的小函数,它通过 USB 将字符串发送到终端:

void localprint(char* msg){
if(strlen(msg) > 60){
            usb_sendData(msg,60);
}
else usb_sendData(msg,strlen(msg));

} 该函数适用于像 :

这样的字符串
localprint(" I'm a test" ), 

消息显示在终端上。 现在我想在终端上获取 adcValue,这是一个 int,因为我已经尝试过:

char t= (char)(((int)'0')+getADCValue(9)); // getting the ADC value of 0th channel 
localprint(&t);

这根本行不通,我也试过了:

char t= (char) getADCVAlue(9);
localprint(&t);

也不行。所以我的问题是我该怎么做。我正在使用 uC STM32f10xx 和 ARM gcc。 感谢任何提示

在不知道可能的整数范围的情况下,像这样的东西会起作用:

char buffer[32];
sprintf(buffer, "%d", getADCVAlue(9));
localprint(buffer);

既然你做了 0+,我假设它是一位数,所以你可以去

char buffer[2];
buffer[0] = '0' + getADCVAlue(9);
buffer[1] = '[=11=]';
localprint(buffer);

来自 John3136 的答案如果您将 sprintf 替换为一些轻量级实现,例如来自 elm-chanxsprintf,我会很好地工作发现在嵌入式编程中非常有帮助。或者,如果您想使用 sprintf.

,则必须有一些系统调用存根,例如 _sbrk

我无法评论来自 John3136 的解决方案,因为我没有足够的声誉。