这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » 分享一段仅输出打印字符的函数实现

共1条 1/1 1 跳转至

分享一段仅输出打印字符的函数实现

院士
2026-07-30 16:02:13     打赏
分享一段仅输出打印字符的函数实现

调试日志输出或者屏幕输出,提示信息输出等等都需要将字符串打印出来。大多数情况下,字符串由下位机自行管理,打印输出会正常显示。但也有的时候要输出的字符串可能由用户输入,可能保存到flash中等存储设备,而再读出时可能出现错误等异常情况。如果此时,仅仅机械的强制输出到屏幕,或者打印出来,往往轻则会出现乱码现象,甚至,可能出现系统crash的严重问题。所以,在输出字符串之前需要对待输出字符串进行一次字符有效性过滤,并将非打印字符通过转义符的方式输出,以保证系统显示正常。

下面这段程序代码参考自Linux内核中输出字符串到终端,其简单,有效的过滤非打印字符,并将其转义为\\x%02x的方式输出。供大家参考使用

void print_ch(const char *buf, uint32_t len)
{
  char ch;
  while (len--)
  {
    ch = *buf++;
    if (ch == '\\')
    {
      printf("\\\\");
    }
    else if (!ch && !len)
    {
      ;
    }
    else if (ch < 32 || ch == 127)
    {
      printf("\\x%02x", ch);
    }
    else
    {
      putchar(ch);
    }
  }
}





关键词: 输出     字符     函数    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]