事情是snprintf
完美的功能:
char str[LEN];
snprintf(str, sizeof(str), "%d", num);
Run Code Online (Sandbox Code Playgroud)
这是您可以使用的简单片段。有更优雅和更高级的方法,但这可以完成工作。
在过去的嵌入式项目中,我测得它的效率比 sprintf() 大约高 1000 倍。此代码也符合 MISRA-C 标准。
void getDecStr (uint8_t* str, uint8_t len, uint32_t val)
{
uint8_t i;
for(i=1; i<=len; i++)
{
str[len-i] = (uint8_t) ((val % 10UL) + '0');
val/=10;
}
str[i-1] = '\0';
}
Run Code Online (Sandbox Code Playgroud)