什么格式%c%.8x在snprintf中的含义

时间:2017-06-02 12:42:26

标签: c printf format-specifiers

在下面的代码中,%c%.8x格式是什么意思?

例如,如果val的值为8,那么该怎么回事?'?

int send_cmd(int fd, char cmd, int val) {
char buf[32];
int res;
  snprintf(buf,32,"%c%.8x\n",cmd,val);
  res = write (fd, buf, 10); // send X00000000<LF>
  if (res == 10) 
    return 0;
  else {
    fprintf(stderr,"Did not send ten -> %d\n",res);
  }
  return -1;
}

1 个答案:

答案 0 :(得分:2)

首先,我告诉您,%c%.8x是两种不同的格式说明符,%c%.8x

那就是说,

  • %c比较熟悉,打印所提供的int参数的字符表示。

  • 关于不太熟悉的%.8x格式说明符,引用C11,章节§7.21.6.1/ p4, precision 选项,(强调雷

      

    每个转换规范都由字符%引入。在%之后,以下内容   按顺序出现:

         
        
    • 可选精度,为di提供最小显示位数,   ouxX次转化,小数点后显示的位数   aAeEfF次转化的字符,[...]精度采用的形式一段时期(.)后跟一个   星号*(稍后描述)或可选的十进制整数; [...]
    •